分析:
每次循环从数组中选一个最大的数。
第一次从 0 到 len-1, 将最大的数和len-1进行交换位置
第二次从 0 到 len-2, 将最大的数和len-2进行交换位置
...
倒数第二次从 0 到 1, 将最大的数和1进行交换位置
最后一次 0
JAVA代码实现:
// "static void main" must be defined in a public class.
public class Main {
public static void main(String[] args) {
int[] arr = new int[100];
for(int i=0;i<100;i++) {
arr[i] = (int) (Math.random() * 100);
}
sort(arr);
for(int i=0;i<100;i++){
System.out.println(arr[i]);
}
}
public static void sort(int[] arr) {
int len = arr.length;
for(int i=0;i<len;i++) {
int max = arr[0]; //记住,这里每次是从0开始比较,不是i
int maxIndex = 0;
for(int j=0;j<len-i;j++) {
if(arr[j] > max) {
maxIndex = j;
max = arr[j];
}
}
arr[maxIndex] = arr[len - 1 - i];
arr[len - 1 - i] = max;
}
}
}
网友评论