排序四(希尔排序)

117 阅读1分钟

希尔排序

希尔排序(shell sort)为一种简单高效的排序算法,为插入排序的一种,希尔排序是非稳定的排序算法,希尔排序为按下标的一定增量进行分组,对每组直接使用插入排序算法进行排序,随着增量的减少,当增量减少为1时,整个序列被分成了一组,算法就停止了。

li = [54,26,93,17,77,31,44,55,20]

def shell_sort(li):
	n = len(li)    # 列表的长度
	incerment = n // 2   # 增量
    while incerment > 0:
    	for i in range(incerment,n):
        	while i >= incerment and li[i-incerment] > li[i]:
            	li[i-incerment],li[i] = li[i],li[i-incerment]
                i -=incerment
        incerment = incerment // 2
shell_sort(li)
print(li)