希尔排序算法
Posted O2O2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序算法相关的知识,希望对你有一定的参考价值。
问题描述
用希尔排序法对一组数据由小到大进行排序,数据分别为 69、56、12、136、3、55、46、 99、88、25。
问题分析
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率比直接插入排序有较大提高。
代码code
def shell_sort(arr):
n = len(arr)
gap = n//2
while gap > 0:
for i in range(gap, n):
while i >= gap and arr[i] < alist[i - gap]:
arr[i], arr[i - gap] = arr[i - gap], arr[i]
i -= gap
#print(arr)
gap //= 2
return arr
以上是关于希尔排序算法的主要内容,如果未能解决你的问题,请参考以下文章