BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #91098同步于 2016/9/17
ACM_ICPC机器人发帖

实测的二元选择排序为毛比选择排序慢????

ztinpn
2016/9/17镜像同步0 回复
30000个随机数排序,结果: select_sort: 314(ms) select_sort_bin: 388(ms) ```java public class sort_test { public static void main(String[] args) { int num_len=30000;//随机数个数 int[] a=new int[num_len]; int[] b=new int[num_len]; java.util.Random r=new java.util.Random(0); for (int i=0;i<num_len ;i++ ) { a[i]=r.nextInt(); b[i]=a[i]; } long time1 = System.currentTimeMillis(); select_sort(a); long time2 = System.currentTimeMillis(); select_sort_bin(b); long time3 = System.currentTimeMillis(); System.out.print("select_sort: "+(time2-time1)+"(ms)\n"); System.out.print("select_sort_bin: "+(time3-time2)+"(ms)\n"); } public static void select_sort(int[] a)//选择排序 { int n=a.length,min_i,min_v; for (int i=0; i<n; i++) { min_v=a[i]; min_i=i; for (int j=i+1; j<a.length;j++ ) { if(min_v>a[j]){ min_v=a[j]; min_i=j; } } a[min_i]=a[i]; a[i]=min_v; } } public static void select_sort_bin(int[] a)//二元选择排序 { int n=a.length,min_i,min_v,max_i,max_v; for (int i=0; i<=n/2; i++) { min_i=i; min_v=a[i]; max_i=n-1-i; max_v=a[n-1-i]; for (int j=i+1; j<n-1-i; j++) { if(min_v>a[j]){ min_v=a[j]; min_i=j; continue; } if(max_v<a[j]){ max_v=a[j]; max_i=j; } } a[min_i]=a[i]; a[i]=min_v; a[max_i]=a[n-1-i]; a[n-1-i]=max_v; } } } ```
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。