4 2 1 3 4 5 5 4 3 2 1 0
1 2 3 4 1 4 3 2 5
分析:题目的要求:找到最小的数和第一个数进行交换,然后依次输出,所以第一想到的方法是:选择排序法。
需要用到的有数组,min,位置数:k
用数组a[]来接收输入的数据
用min记住第一个输出的数a[0],依次和接下来的数进行比较,找到最小的数,如果有,用k记住他的位置,如果没有,k=0也就是a[0]
int min=a[0];
所以用到for(int i=0;i<n;i++){
if(min<a[i]){
min=a[i];
k=i;
}
}
然后判断 k==0?
如果不等于
就将a[0]和a[k]进行交换,a[k]就是最小的数。
代码如下:
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
if(n==0){
break;
}
int a[] = new int[n];
a[0] = sc.nextInt();
int min = a[0];
int k = 0;
for (int i = 1; i < n; i++) {
a[i] = sc.nextInt();
if (min > a[i]) {
min = a[i];
k = i;
}
}
if (k != 0) {
int s = a[0];
a[0] = a[k];
a[k] = s;
}
for(int i=0;i<n-1;i++){
System.out.print(a[i]+" ");
}
System.out.println(a[n-1]);
}
}
}