希尔排序-python版

希尔排序思想:
算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。
一般的初次取序列的一半为增量,以后每次减半,直到增量为1。

  
def shell_sort(list):
    n = len(list)
    gap = n//2
    new_list =[]
    while gap > 1:
        for i in range(gap):
            if list[i] > list[i+gap]:
                list[i], list[i+gap] = list[i+gap], list[i]
        gap = gap // 2;
    if gap == 1:
        for j in range(n):
            if j == 0:
                new_list.append(list[j])
            else:
                new_list.append(list[j])
                for k in range(j, 0, -1):
                    if new_list[k] < new_list[k-1]:
                        new_list[k], new_list[k-1] = new_list[k-1], new_list[k]
    return new_list




if __name__ == '__main__':
    a = [58,89,56,3,4,5,79879,263536,45215,4543]
    b = shell_sort(a)
    print(b)

你可能感兴趣的:(笔试+面试)