排序的顺序其实并非按照各分组依次插排进行的,而是在分组间不停的跳跃,直到循环完成,对每一个分组都排好序。这实际上是找到各分组插排实现的共性,放到一起以简化代码【有点子各分组并行的意思】。
def shellsort(arr): lenth = len(arr) gap = lenth // 2 while gap >= 1: for i in range(gap, lenth): j = i while j-gap >= 0 and arr[j] < arr[j-gap]: arr[j] , arr[j-gap] = arr[j-gap], arr[j] j = j - gap gap = gap // 2 return arr
gap = 4
gap = 2



