希尔排序

来源:互联网 发布:海关数据开发客户 编辑:程序博客网 时间:2024/06/05 10:49
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();    }}
0 0