日期:2014-05-20 浏览次数:20782 次
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;