package test;
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int arry[]= {21,3,43,5,7,1};
selectSort1(arry);
//selectSort2(arry);
}
/**
* 直接选择排序(发现当前数比被比较数小的时候,我们就交换两个数)
* 例如:
* int arry[]= {21,3,43,5,7,1};
* 第一轮:1 21 43 5 7 3
* 第二轮:1 3 43 21 7 5
* 第三轮:1 3 5 43 21 7
* 第四轮:1 3 5 7 43 21
* 第五轮:1 3 5 7 21 43
*/
public static void selectSort1(int[] arry) {
System.out.println("直接选择排序前:" + Arrays.toString(arry));
for (int i = 0; i < arry.length - 1; i++) { //控制轮数
for (int j = i + 1; j < arry.length; j++) {
if (arry[i] > arry[j]) {
int temp = arry[j];
arry[j] = arry[i];
arry[i] = temp;
}
}
}
System.out.println("直接选择排序后:" + Arrays.toString(arry));
}
/**
* 直接选择排序(当前数比被比较数小的时候,我们把当前数的位置保存下来,等到这轮比较完后,在进行交换。)
*
*/
public static void selectSort2(int[] arry) {
System.out.println("直接选择排序前:" + Arrays.toString(arry));
int index = 0;
for (int i = 0; i < arry.length - 1; i++) {
index = i;
for (int j = i + 1; j < arry.length; j++) {
if(arry[index] > arry[j]) {
index = j; //保存位置
}
}
if(index != i) { //进行交换
int tmp = arry[index];
arry[index] = arry[i];
arry[i] = tmp;
}
}
System.out.println("直接选择排序前:" + Arrays.toString(arry));
}
}