选择排序,冒泡排序,快速排序速度测试 以下结果是对有20000个元素数组的排序测试 快速排序最快,16毫秒 选择排序次之,2969毫秒 冒泡排序最慢(臭名昭著啊!)5844毫秒 实在差的太多了! package design; public class Test { /** * 方法说明 * @param * @return */ public static void main(String[] args) { int[] array=new int[20000]; for(int i=0;i<20000;i++){ array[i]=(int) (Math.random()*100); } Test test=new Test(); long start1=System.currentTimeMillis(); test.Mp(array); System.out.println(System.currentTimeMillis()-start1); long start2=System.currentTimeMillis(); test.Xz(array); System.out.println(System.currentTimeMillis()-start2); long start3=System.currentTimeMillis(); System.out.println("快速排序:"); test.QuickSort(array, 0, array.length-1); System.out.println(System.currentTimeMillis()-start3); } //选择排序 public void Xz(int[] i){ System.out.println("选择排序:"); int temp; int len=i.length; for(int j=0;j<len-1;j++){ for(int t=j+1;t<len;t++){ if(i[j]<i[t]){ swap(i[j],i[t]); } } } /* for(int y:i){ System.out.print(y+", "); } System.out.println();*/ } //冒泡排序 public void Mp(int[] array){ System.out.println("冒泡排序:"); int temp; int len=array.length; for(int i=0;i<=len;i++){ for(int j=0;j<=len-2;j++){ if(array[j]<array[j+1]){ swap(array[j],array[j+1]); } } } /* for(int y:array){ System.out.print(y+", "); } System.out.println();*/ } //快速排序 private static void QuickSort(int[] list, int l, int r) { int i, j; int x, y; i = l; j = r; x = list[(r + l) / 2];// 定义中间值 do { while ((list[i] < x) && (i < r)) i++; while ((x < list[j]) && (j > l)) j--; if (i <= j) { y = list[j]; list[j] = list[i]; list[i] = y; i++; j--; } } while (i <= j); if (l < j) QuickSort(list, l, j); if (i < r) QuickSort(list, i, r); } //交换 public void swap(int a,int b){ int temp=a; a=b; b=temp; } }