美文网首页
Java排序算法分析与实现(5)------希尔排序

Java排序算法分析与实现(5)------希尔排序

作者: 咖啡少年不加糖whm | 来源:发表于2019-10-09 10:51 被阅读0次

一、原理

        选择一个增量序列他t1, t2, ... , tk,  其中ti > tj,  tk=1;
        按增量序列个数k,  对序列进行k趟排序
        每趟排序,根据对应的增量ti, 将待排序列分割成若干长度为m的子序列,分别对各子表进行直接插入排序。仅增量因子为1时,整个序列作为一个表来处理,表长度即为整个序列的长度

最佳情况:   T(n) = O(n*\log_2 n)               最坏情况:T(n) = O(n*\log_2 n)    平均情况:  T(n) = O(n*\log_2 n)

过程:(1)初始增量 gap = length / 2, 意味着整个数组被分为五组,
             (2)对这5组分别进行直接插入排序,小元素被调到前面,然后缩小增量gap=5/2
             (3)对上面两组进行直接插入排序,在缩小增量pag=2/2

二、代码实现

相关文章

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

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

  • Java排序算法分析与实现(5)------希尔排序

    一、原理 选择一个增量序列他t1, t2, ... , tk, 其中ti > tj, tk=1; 按...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

  • 排序算法的实现

    用java对常用内部排序算法的实现。 对冒泡排序,简单选择排序,直接插入排序,希尔排序,归并排序的简单实现(缺少快...

  • 盘点常用Java排序算法

    本文主要介绍Java的七种常见排序算法的实现,对选择排序、插入排序、冒泡排序、归并排序、快速排序、希尔排序、最小堆...

  • 盘点常用Java排序算法

    本文主要介绍Java的七种常见排序算法的实现,对选择排序、插入排序、冒泡排序、归并排序、快速排序、希尔排序、最小堆...

  • Java实现各种常用的排序算法

    Java实现各种常用的排序算法,包括:冒泡排序、插入排序、二分排序、选择排序、希尔排序、堆排序、快速排序(两种写法...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 2.2-插入排序-希尔排序

    参考链接 插入排序:希尔排序(Shell's Sort) 白话经典算法系列之三 希尔排序的实现 希尔排序是1959...

网友评论

      本文标题:Java排序算法分析与实现(5)------希尔排序

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