美文网首页
希尔排序-改进版的插入排序

希尔排序-改进版的插入排序

作者: gbmaotai | 来源:发表于2019-05-28 17:42 被阅读0次

Shell 1959 DL.Shell

image
改进版的插入排序
增加一个间隔,每一个数据只和它前面间隔gap的数据相比较。
3个循环
假定一个gap
for(i=gap;i<arraysize;i++)
{
    for(j=gap; j>gap-1;j-=gap)
        if(array[j] < array[j-gap])
            swap(array, j ,j-gap);
}
gap的选择
half gap
    for(gap = arraysize/2; gap>0;gap/=2)
    {
        for(i=gap; i<arraysize;i++)
        {
            for(j=i;j>gap-1;j-=gap)
                if(array[j] < array[j-gap])
                    swap(array, j ,j-gap);
                else 
                    break;
        }
    }
Knuth gap

3N + 1, 效率更高

    while(h < arraysize)
    {
        h = 3*h + 1;
    }

    for(gap = h; gap>0;gap=(gap-1)/3)
    {
        for(i=gap; i<arraysize;i++)
        {
            for(j=i;j>gap-1;j-=gap)
                if(array[j] < array[j-gap])
                    swap(array, j ,j-gap);
                else 
                    break;
        }
    }
时间复杂度 平均 O(n1.3),

最好情况O(n) ,最坏O(n2)

不稳定

相关文章

  • 常用的排序算法详解:希尔排序,桶排序,选择排序,冒泡排序,快速排

    排序算法——希尔排序 希尔排序是插入排序的一种,又称"缩小增量排序”,是插入排序算法的一种更高效的改进版本。 希尔...

  • 排序-希尔排序

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

  • 数据结构与算法(希尔排序)

    希尔排序 希尔排序是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种高效改进版本。希尔排序是非稳定排序算...

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

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

  • swift经典算法-希尔排序

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

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

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

  • 算法学习:希尔排序

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

  • 排序算法(三)希尔排序

    希尔排序是一种插入排序,是插入排序的改进版本,也成为缩小增量排序(Diminishing Increment So...

  • 希尔排序学习

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

  • 算法与数据结构-希尔排序

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

网友评论

      本文标题:希尔排序-改进版的插入排序

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