python希尔排序的用法

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基础教程

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。