希尔排序(使用Python描述)

问题描述

  个人理解希尔排序就是插入排序的改进版,理解希尔排序之前需要先理解插入排序的逻辑.

五分钟学会一个高难度算法:希尔排序

此算法特性

暂为空,待补充

此算法适用场景

暂为空,待补充




代码实现

def shellSort(alist):
    list_count = len(alist) // 2 # 分为多少份.每次除以2.最低是1(while做限制).

    while list_count > 0: # 做限制

        for start_position in range(list_count): # 分块
            getInsertionSort(alist,start_position,list_count) # 使用插入排序函数
        
        list_count = list_count // 2 



def getInsertionSort(alist,start,gap): # 插入排序抽象

    for i in range(start+gap,len(alist),gap): # start+gap 是起始对比下标

        current_value = alist[i]
        now_index = i

        while now_index>=gap and alist[now_index-gap] > current_value: 
            # now_index>=gap是做一个限制.

            alist[now_index] = alist[now_index-gap]
            now_index = now_index - gap
        
        alist[now_index] = current_value

alist = [21,152,33,3241,54,654,423,12,32]
shellSort(alist)
print(alist)





参考

posted @ 2020-03-18 16:12  高坦的博客  阅读(139)  评论(0编辑  收藏  举报