정렬 알고리즘 - 힐 (셸) 정렬 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]

좋은 웹페이지 즐겨찾기