希尔排序

作者: Sun东辉 | 来源:发表于2022-05-11 07:30 被阅读0次

希尔排序(Shellsort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,从它的发现之日起,又过了若干年后才证明它的亚二次时间界。它通过比较相距一定间隔的元素来工作,各躺比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序有时也叫作缩小增量排序(diminishing increment sort)。

希尔排序使用一个序列 h_1,h_2,...,h_t,叫作增量序列(increment sequence)。在使用增量 h_k 的一趟排序之后,对于每一个 i 就有 A[i]\leq A[i+h_k](这里它是有意义的),所有相隔 h_k的元素都被排序。

h_k-排序的一般做法是,对于 h_k, h_k+1,...,N-1 中每一个位置 i,把其上的元素放到 i,i-h_k,i-2h_k...中间的正确位置上。增量序列的一种流行(但是不好)的选择是使用 Shell 建议的序列:h_t= \frac{N}{2}h_k=\frac{h_k+1}{2}

希尔排序的运行时间依赖于增量序列的选择,而证明可能相当复杂。希尔排序的平均情形分析,除最平凡的一些增量序列外,是一个长期未解决的问题。

定理一:使用希尔增量时希尔排序的最坏情形运行时间为 \Theta(N^2)

定理二:使用 Hibbard 增量的希尔排序的最坏情形运行时间为 \Theta(O^{\frac{3}{2}})

相关文章

  • 排序算法(二)之希尔排序

    图解排序算法(二)之希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也...

  • 07-希尔排序(Shell Sort)

    希尔排序(Shell Sort) 希尔排序是唐纳德·希尔(Donald Shell)在0959年提出的。希尔排序与...

  • 排序-希尔排序(分治)

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • swift经典算法-希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法④——希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法-希尔排序(Java实现)

    希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是...

  • 说说算法那些事-希尔排序

    希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,希尔排序法又称...

  • 希尔排序学习

    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • 编程马拉松 Day04 希尔排序、归并排序、快速排序

    本文将介绍三个高级排序算法 希尔排序 归并排序 快速排序 希尔排序 希尔排序(Shell's Sort)的名称源于...

网友评论

    本文标题:希尔排序

    本文链接:https://www.haomeiwen.com/subject/lwuwsrtx.html