直接插入排序:
package sort; public class InsertSort { public static void sort(int[] array , int len){ for(int i = 2; i < len ; ++i){ array[0] = array[i]; int j = i - 1; while(array[0] < array[j]){ array[j+1] = array[j]; --j; } array[j+1] = array[0]; } } public static void main(String[] args) { int[] array = {0,3,5,99,87,35,42,21}; sort(array , array.length); for(int i = 1; i< array.length ; i++){ System.out.print(array[i]+ " "); } } }
希尔排序:
package sort; public class ShellSort { public static void shellInsert(int[] array , int len , int deldata ){ int j = 0; for(int i = 1+deldata; i <= len;i+=deldata){ array[0] = array[i]; if(array[i] < array[i-deldata]){ for(j = i-deldata;j>0 && array[j]>array[0];j-=deldata){ array[j+deldata] = array[j]; } array[j+deldata] = array[0]; } } } public static void shellSort(int[] array ,int len , int deldata[],int n){ for(int i = 1;i <= n ; i++){ shellInsert(array,len , deldata[i]); } } public static void main(String[] args) { int[] array = {0,2,6,4,99,44,63,63,35,44,88,77,33,222,35,25,3,2,67}; int[] deldata = {0,4,2,1}; long start = System.currentTimeMillis(); shellSort(array,array.length-1,deldata,deldata.length-1); System.out.println("排序时间:"+(System.currentTimeMillis()-start)); for(int i=1;i<array.length;i++){ System.out.print(array[i]+" "); } } }