当前位置: 首页 > 图灵资讯 > 行业资讯> python希尔排序的用法

python希尔排序的用法

来源:图灵python
时间: 2024-06-24 13:31:53

1、根据相邻元素进行排序,如果直接插入排序为步长为1,则希尔排序为步长为K插入排序。

2、然后在步长K排序的基础上对步长m进行排序,K大于m,最后对步长1进行排序。

实例

defshell_sort(data_list):
'''
思想:分治策略
使用for循环
'''
length=len(data_list)
space=length//2
whilespace>0:
foriinrange(space,length):#默认情况下,第一个位置的元素是已排序的范围,因此从1开始下标
tmp=data_list[i]#要插入的数据
index=i
forjinrange(i-space,-1,-space):#从排序区间找到插入位置
iftmp<data_list[j]:
data_list[j+space]=data_list[j]#元素向后移动,腾出插入位置
index=j#最后一个j是插入的位置
else:
break
data_list[index]=tmp#插入操作
print(data_list)
space=space//2
returndata_list

defshell_sort2(data_list):
'''
思想:分治策略
使用while循环
'''
length=len(data_list)
space=length//2
whilespace>0:
i=space
whilei<length:#默认情况下,第一个位置的元素是排序区间,因此,从1开始下标
tmp=data_list[i]#要插入的数据
j=i
whilej>=spaceanddata_list[j-space]>tmp:#从排序区间找到插入位置
data_list[j]=data_list[j-space]#元素向后移动,腾出插入位置
j-=space
data_list[j]=tmp#插入操作
print(data_list)
i+=1
space=space//2
returndata_list

以上是python希尔排序的用法,希望对大家有所帮助。更多Python学习指导:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。