'''
时间复杂度为O(nlogn)
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,
是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;
随着增量逐渐减少,每组包含的关键词越来越多,
当增量减至1时,整个文件恰被分成一组,算法便终止。
'''
# def shell_sort(lists):
# count=len(lists)
# step = 2
# group = int(count/step)
# print(type(group))
# while group>0:
# for i in range(group):
# j=i+group
# while j<count:
# key=lists[j]
# k=j-group
# while k>=0:
# if lists[k]>key:
# lists[k+group]=lists[k]
# lists[k]=key
# k=k-group
# j=j+group
# group=group/step
# return lists
#
# arr = [2, 645, 1, 344, 546, 442, 89, 99, 76]
# print(shell_sort(arr))
def ShellInsetSort(array, len_array, dk): # 直接插入排序
for i in range(dk, len_array): # 从下标为dk的数进行插入排序
position = i
current_val = array[position] # 要插入的数
index = i
j = int(index / dk) # index与dk的商
index = index - j * dk
while position > index and current_val < array[position - dk]:
array[position] = array[position - dk] # 往后移动
position = position - dk
else:
array[position] = current_val
def ShellSort(array, len_array): # 希尔排序
dk = int(len_array / 2) # 增量
while (dk >= 1):
ShellInsetSort(array, len_array, dk)
print(">>:", array)
dk = int(dk / 2)
array = [49, 38, 65, 97, 76, 13, 27, 49, 55, 4]
print(">:", array)
ShellSort(array, len(array))
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Python算法学习.rar (10个子文件)
Python算法学习
冒泡排序.py 545B
插入排序-直接插入.py 978B
希尔排序-插入排序升级版.py 2KB
堆排序-选择排序升级版.py 0B
选择排序.py 701B
快速排序-冒泡升级版.py 881B
二分法.py 709B
快速排序.py 895B
快速排序二.py 615B
归并排序.py 595B
共 10 条
- 1
资源评论
JJJ69
- 粉丝: 6135
- 资源: 5674
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功