希尔排序首先选择增量,对原列表分组,然后将同组数组使用直接插入法排序,最后增量为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]
转载于:https://www.cnblogs.com/japyc180717/p/9419910.html