-
核心思想:每次循环找出最小值放在队头
-
时间复杂度:
-
空间复杂度:由于没有使用额外空间,所以O(1)
-
代码实现:
/**
* 选择排序
* 最简单、最容易想到、最容易理解的排序算法,最没用
* 找出第一小的放在0位置
* 找出第二小的放在1位置
* 找出第三小的放在2位置
* ......
* @param arr
*/
public static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;// minIndx是每一轮循环后的最小值的下标,i是最终值应该所在的位置
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(i, minIndex, arr);//交换
}
}