1. 程式人生 > >python實現shell排序

python實現shell排序

復雜度 urn 算法 減少 div n) 版本 ray clas

shell(希爾)排序是插入排序的一種,是直接插入排序算法的一種更高效的改進版本, 其思想是使數組中任意間隔h的元素都是有序的,其目的是為了減少元素的移動距離.

時間復雜度: O(nlogn)~O(n^2)

def shell_sort(array):
    n = len(array)
    gap = n // 2
    while gap > 0:
        for i in range(gap, n):
            for j in range(i, gap-1, -gap):
                if array[j] < array[j-gap]:
                    array[j], array[j
-gap] = array[j-gap], array[j] else: break gap //= 2
  return array

array_0 = [12, 23, 54, 32, 11, 76, 5, 73,2, 89, 76,554,65,234, 42]
shell_sort(array_0)

>>> [2, 5, 11, 12, 23, 32, 42, 54, 65, 73, 76, 76, 89, 234, 554]

  

python實現shell排序