排序算法——希尔(shell)排序Python实现

"""
shell排序:每一轮先将数据分组,在分组里面对数据进行插入排序,依次进行增量式分组(每一次分组,组数会减少,但是每个组内的元素会增多),
直到最后每一个数与其邻居进行比较为止。
在每个组进行插入排序时,不同的组是交叉进行的,可以参考代码for i in range(gap, len(l))。
"""
l = [2, 9, 10, 11, 3, 7, 4, 0, 6, 11, -7]
gap = int(len(l)/2)
while gap > 0:
    for i in range(gap, len(l)):
        temp = l[i]
        j = i - gap
        while j >= 0 and l[j] < temp:
            l[j + gap] = l[j]
            j = j - gap
        l[j + gap] = temp

    if gap == 1:
        break
    else:
        gap = max(1, int(gap/2))

print(l)

[11, 11, 10, 9, 7, 6, 4, 3, 2, 0, -7]

你可能感兴趣的:(数据结构与算法)