选择排序,就是从数组的左边到右边,一个数一个数的去找最大值(最小值),如
int [] a={4,1,3,2},从大到小排序:
步奏1.找a[0]位置上的数,肯定是最大的那个数,找到后放到a[0]位置上
步奏2。找a[1]位置上的数,这个时候,应该从除了a[0]外的数中去找最大的数
步奏3。找a[1]位置上的数,这个时候,应该从除了a[0],a[1]外的数中去找最大的数
排序4个数,只需要排好前3个数就行了,最后一个数自然就排列好了
import java.util.Scanner;
public class SelectSort {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入个数");
int a=sc.nextInt();
int[] b=new int[a];
for(int i=0;i<a;i++){
System.out.println("请输入数据");
b[i]=sc.nextInt();
}
for (int i : b) {
System.out.print(i);
}
for(int i=0;i<b.length-1;i++){
for(int j=i+1;j<b.length;j++){
if(b[i]<b[j]){
int c=b[i];
b[i]=b[j];
b[j]=c;
}
}
}//是从第一个数跟后面的比,比第一个大的数,就和第一个数交换,每一趟下来,
//第i个数就是i后面数中最大的,所以j要从i的后面一个数开始比较
/*
- 如:2 3 1 4
- 第一趟下来(就是i==0时,执行里面的for循环):
- 3 2 1 4
- 3 2 1 4
- 4 2 1 3(第一趟结束时的数组b)
- 第2趟:
- 4 2 1 3
- 4 3 1 2(第2趟结束时的数组b)
- 第3趟:
- 4 3 2 1(结束)
- 注意:外面的for循环是从数组的第一个开始,倒数第2个结束
-
里面的for循环是从i的后面一个开始,数组的最后一个结束
*/
for (int i : b) {
System.out.print(i);
}
}
}