希尔排序

Posted ssdut_yrp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序相关的知识,希望对你有一定的参考价值。

public class ArraySh {
    private long[] theArray;
    private int nElems;

    public ArraySh(int max){
        theArray=new long[max];
        nElems=0;
    }

    public void insert(long value){
        theArray[nElems]=value;
        nElems++;
    }

    public void display(){
        System.out.print("A=");
        for(int j=0;j<nElems;j++)
            System.out.print(theArray[j]+" ");
        System.out.println("");
    }

    public void shellSort(){
        int inner,outer;
        long temp;
        int h=1;
        while(h<=nElems/3){//find initial value of h
            h=h*3+1;//1 4 13 40 121
        }
        while(h>0){//decreasing h ,until h=1
            for(outer=h;outer<nElems;outer++){
                temp=theArray[outer];
                inner=outer;
                while(inner>h-1&&theArray[inner-h]>=temp){
                    theArray[inner]=theArray[inner-h];
                    inner-=h;
                }
                theArray[inner]=temp;
            }
            h=(h-1)/3;
        }
    }
}
public class ShellSortApp {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int maxSize=10;
        ArraySh arr;
        arr =new ArraySh(maxSize);
        for(int j=0;j<maxSize;j++){
            long n=(int) (Math.random()*99);
            arr.insert(n);
        }
        arr.display();
        arr.shellSort();
        arr.display();
    }
}

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

希尔排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序