每次看到基础排序,下手都是有点差气,故按照自己的想法写了一个,也是为自己以后可以看看。
package demo_test;
/*
* @author taoyang
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = new int[10];//初始化数组
for(int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()*100);//填充数组,10个0-100的随机数
}
System.out.println("打印初始数组");
for(int i:arr) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("各层排序数组打印");
System.out.println("*******************************");
/*
* 外层:首先从下标0处取值,往后延续,直到数组的倒数第二位即可。
* 倒数第一位其实已经排序好,无需再进行排序。
*/
for(int i = 0; i < arr.length - 1; i++) {
int min = i;
/*
* 内层:第一次时,从数组第二位开始(至最后一位)分别和第一位开始比较,
* 若小于第一位则min赋值为j。此处和冒泡排序相比只是进行比较,而非每次都
* 需要交换位置,故速度会加快。
*/
for(int j = i +1; j < arr.length; j++) {
if(arr[min] > arr[j]) {
min = j;
}
//swap a[i] a[j]
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
for(int a : arr) {
System.out.print(a+" ");
}
System.out.println();
}
}
}