特点:
第n此排序,确定第n个位置的元素,不稳定
不稳定性说明:如数组[5, 8, 5, 2, 9],第一次排序第一个5和2交换,则两个5的相对位置改变了
思想:
对于第 n 次排序,设定一个标识用于记录数组中所有未排序元素的最大值(或最小值位置),并将其与数组第 n 个位置的元素互换
最好情况 | 最坏情况 | 平均 | |
时间复杂度 | O(n * n) | O(n * n) | O(n * n) |
空间复杂度:O(1)
public class SelectionSort {
/**
* @yjw 2018/07/09
* @param arr 待排序数组
*/
public static void selectionSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for(int i = 0; i < arr.length-1; i++){
int minIndex = i;
for(int j = i+1; j < arr.length; j++){
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr, i, minIndex);
}
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}