package sort;
public class select {
public static void main(String[] args) {
int[] arr = {2,4,1,5,6,3,9};
selectSort(arr);
print(arr);
}
/**
* x选择一个最小的数与第一个数交换位置,形成一个长度为一的有序序列
* x从arr[1...n-1]中选择一个最小的数与arr[1]交换位置,
* x形成一个长度为2的有序序列arr[0,1]
* x...直到最好全部有序
* @param arr
* x时间复杂度为O(N^2),空间O(1)
*/
private static void selectSort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
int index = i;
for (int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[index])
index = j;
}
swap(arr, index, i);
}
}
private static void print(int[] arr) {
for (int i : arr) {
System.out.print(i+"\t");
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
/* 位运算
* arr[i] = arr[i] ^ arr[j];
* arr[j] = arr[i] ^ arr[j];
* arr[i] = arr[i] ^ arr[j];
*/
/* arr[i] = arr[i] + arr[j];
* arr[j] = arr[i] - arr[j];
* arr[i] = arr[i] - arr[j];
* */
}
}