日期:2014-05-20 浏览次数:20964 次
public class Args {
public static void main(String[] args) {
int[] a = new int[args.length];
int flag = 0;
for(int i = 0;i < args.length;i++) {
a[i] = Integer.parseInt(args[i]);
}
for(int i = 0;i < a.length; i++)
System.out.print(a[i]+" ");
System.out.println();
int tmp;
for(int i = 0;i < a.length-1; i++) {
tmp = a[i];
for(int j = i+1;j< a.length; j++) {
if(tmp>a[j]) {
tmp = a[j];
flag = j;
}
}
a[flag] = a[i];
a[i] = tmp;
}
for(int i = 0;i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
}
for(int i = 0;i < a.length-1; i++) {
tmp = a[i];
flag = -1;
for(int j = i+1;j< a.length; j++) {
if(tmp>a[j]) {
tmp = a[j];
flag = j;
}
}
//a[flag] = a[i]; //这里不是在for(j)里面交换,而是在for(j)外面交换,
//a[i] = tmp; //也就是是找完最小一个交换
}
if (flag != -1) { //最好做一个判断,确实找到有比a[i]小的才交换,否则不交换
a[flag] = a[i];//要不然找不到比a[i]小的也交换了
a[i] = tmp;
}
------解决方案--------------------
简单来说就是在你的代码里加上一行
tmp=a[flag];//这是新加的
a[flag] = a[i];
a[i] = tmp;