1,从待排序列中选择最小值与第一个值进行交换
2,
3,空间复杂度 (O(1)) 时间复杂度(O(N^2)) 稳定性->稳定
public static void selectSort(int array[]){
if (array == null || array.length == 0) return;
for (int i = 0; i < array.length; i++) {
int min = i;//最小坐标;
for (int j = i+1; j <array.length ; j++) {
if (array[j] < array[min]){
min = j;
}
}
if (min != i){
int tmp = array[min];
array[min] = array[i];
array[i] = tmp;
}
}
}
//优化:
public static void optimizedSelectSort(int[] array){
if (array == null || array.length == 0) return;
for (int i = 0; i <= array.length/2; i++) {
int min = i;
int max = i;
for (int j = i+1; j <= array.length-1-i; j++) {
if (array[max] < array[j]) {
max = j;
continue;
}
if (array[min] > array[j]) {
min = j;
}
}
//min放在i位置
int tmp = array[i];
array[i] = array[min];
array[min] = tmp;
if (max == i){
max = min;
}
//max放在array.length-1-i位置
tmp = array[array.length-1-i];
array[array.length-1-i] = array[max];
array[max] = tmp;
}
}