您现在的位置是:课程教程文章

python希尔排序的用法

2023-12-13 23:18课程教程文章 人已围观

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电脑。

课程教程:python希尔排序的用法

上一篇:php判断数组元素不为空格的方法

下一篇:没有了

站点信息

  • 文章统计篇文章