您现在的位置是:课程教程文章
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判断数组元素不为空格的方法
下一篇:没有了