插入排序_希尔排序(python)

希尔排序首先选择增量,对原列表分组,然后将同组数组使用直接插入法排序,最后增量为1,实现全局排序
 1 '''
 2 希尔排序
 3 空间复杂度O(1)
 4 时间复杂度最坏(pow(n,2))
 5 时间复杂度一般情况(pow(n,1.3))
 6 '''
 7 def Xier_Px(arr):
 8     size=len(arr)
 9     dk=int(size/2)
10     while dk>=1:
11         for i in range(dk,size):
12             if arr[i]<arr[i-dk]:
13                 temp=arr[i]
14                 j=i-dk
15                 while j>=0 and arr[j]>temp:
16                     arr[j+dk]=arr[j]
17                     j -=dk
18                 arr[j+dk]=temp
19         dk =int(dk/2)
20     print(arr)
21 
22 Xier_Px([88,78,65,156,239,43])
23 
24 输出:
25 [43, 65, 78, 88, 156, 239]

猜你喜欢

转载自www.cnblogs.com/japyc180717/p/9419910.html
今日推荐