shellsort

作者: 大橙子CZ | 来源:发表于2016-06-05 12:20 被阅读0次

shell sort是insertion sort的一种,insertion sort每次只将元素移动一个位置,效率较低,shell sort采用h-sorted的方法,每次隔h个元素进行比较,这样每次元素就会移动h个位置,提高了效率。
推荐的h为3X+1;
其实最后h为1就相当于insertion sort,但是是在前面经过h-sort的基础上,也就是对partially sorted的数组进行insertion sort,效率更高。

public void shellSort(int[] a){
    int N = a.length;
    int h = 1;
    while(h<N/3) h = 3*h+1;
    while(h>=1){
        //h-sort the array
        for(int i = h;i<N;i++){
            for(int j = i;j>h;j-=h){
                if(a[j]<a[j-h]){
                    int ex = a[j];
                    a[j] = a[j-h];
                    a[j-h] = ex;
                }
            }
        }
        h = h/3;
    }
}

shell sort的时间复杂度为O(N 3/2)

相关文章

  • ShellSort

    思想:待排序的记录按增量分割若干区域,然后对每个区域的对应的元素进行insertionSort。 增量为n/2,即...

  • shellsort

    shell sort是insertion sort的一种,insertion sort每次只将元素移动一个位置,效...

  • shellSort

    希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以...

  • 算法4 Java解析:习题 2.1.12

    算法4 Java解析:习题 2.1.12 问题 Instrument shellsort to print the...

  • 排序算法-7---希尔排序

    排序算法-7---希尔排序 概念 希尔排序(Shellsort),也称递减增量排序算法,是一种典型的插入排序算法,...

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

    希尔排序原理 现在,我要讲解的算法叫希尔排序(ShellSort)。希尔排序是D.L.Shell于1959年提出来...

  • 希尔排序

    希尔排序(Shellsort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障的第一批算法...

  • 排序算法之6:希尔排序 ShellSort

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

  • 算法(一)之排序算法(四)——希尔排序(ShellSort)

    希尔排序也是八大排序算法之一,它是在插入排序的基础上演变而来的,也称缩小增量排序,是直接插入排序算法的一种更高效的...

网友评论

      本文标题:shellsort

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