''' 希爾排序: 將數組列在一個表中並對列分別進行插入排序,重複這過程,不過每次用更長的列來進行。 最後整個列表就只有一列了。 ''' import time start1 = time.time() def shell_sort(alist): n = len(alist) # 初始步長 gap = n//2 while gap >0: # 按步長進行插入排序 for i in range(gap,n): j= i # 插入步長 while j>=gap and alist[j-gap] > alist[j]: alist[j-gap], alist[j] = alist[j], alist[j-gap] j -= gap # 獲得新的步長 gap //= 2 if __name__ == "__main__": alist = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] shell_sort(alist) print(alist) end1 = time.time() print(end1-start1)