几种排序方法的测试!

选择排序,冒泡排序,快速排序速度测试

以下结果是对有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; } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值