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

用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()
浙公网安备 33010602011771号