直接排序之希尔排序

希尔排序就是直接插入排序的进化版,具体实现过程如下图所示

 

用python实现方法为  

 1 # 希尔排序
 2 import random
 3 
 4 
 5 def shell_sort(L):
 6     k = int(len(L)/2)
 7     while(k>=1):
 8         for x in range(k, len(L)):
 9             for i in range(x-k,-1,-k):  # 步长为选择的间距
10                 if L[i] > L[i+k]:
11                     tmpt = L[i]
12                     L[i] = L[i+k]
13                     L[i+k] = tmpt
14         k = int(k/2)
15     print(L)
16 
17 
18 def main():
19     L = [1, 2, 4, 5, 7, 8, 10, 24, 58, 55, 90]
20     random.shuffle(L)  # 将数据进行打散
21     print(L)
22     shell_sort(L)
23 
24 
25 if __name__ == '__main__':
26     main()

 

posted @ 2021-03-04 21:48  yang大厂  阅读(89)  评论(0)    收藏  举报