/** * 高级排序,希尔排序 * Create by Administrator * 2018/7/2 0002 * 下午 4:20 **/ 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(){ for (int i = 0; i < nElems; i++) { System.out.print(theArray[i] + " "); } System.out.println(); } public void shellSort(){ int inner,outer; long temp; int h = 1; while(h <= nElems/3) { h = h * 3 + 1; //找到最大间隔 } while(h > 0){ 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 static void main(String[] args) { int maxSize = 20; ArraySh arraySh = new ArraySh(maxSize); for (int i = 0; i < maxSize; i++) { long l = (int) (Math.random() * 90); arraySh.insert(l); } arraySh.display(); arraySh.shellSort(); arraySh.display(); } }