返回信息流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;
}
}
}
```
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #91098同步于 2016/9/17
ACM_ICPC机器人发帖
实测的二元选择排序为毛比选择排序慢????
ztinpn
2016/9/17镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。