代码(python)
def shell_sort(numbers):
n = len(numbers)
gap = n//2
while gap > 0:
for i in range(gap,n):
j = i
temp = numbers[j]
while j > 0 and temp < numbers[j-gap]:
numbers[j] = numbers[j-gap]
j = j - gap
numbers[j] = temp
gap = gap//2
return numbers
希尔排序的思路
希尔排序
思路和理解看这篇博文就够了
思考
个人觉得希尔排序和快速排序都有分治的思想。
而且快速排序中利用传入的参数left和right,在数组中创造了数组;希尔排序中通过控制步长使相隔gap的数为1组,相当于也从数组中分割出了数组。
两者均在没有产生真正的数组的情况下把一个数组分而治之,很值得体会。