希尔排序算法

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


以上是关于希尔排序算法的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之希尔排序

排序算法专题之希尔排序

排序算法之希尔排序

希尔排序

图解排序算法:希尔排序

排序算法——希尔排序