选择排序(Selection Sort)基本思想
:
是一种原址排序法;
将数组分为两个区间:左侧为已排序区间,右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素,放到已排序区间的末尾,从而将该元素划分到已排序区间。
代码实现
function selectSort(arr) {const len = arr.length;let indexMin = 0;for (let i = 0; i < len - 1; i++) {indexMin = i;for (let j = i; j < len; j++) {if (arr[indexMin] > arr[j]) {indexMin = j;}}if (i != indexMin) {swap(arr, i, indexMin);}}return arr;
}function swap(arr, i, j) {const temp = arr[i];arr[i] = arr[j];arr[j] = temp;
}
复杂度
- 时间复杂度O(1),只用到了几个辅助的常量,i,j及最小位置minIndex
- 空间复杂度O(n²)
代码测试
const arr = [10,23,4,5,49,123,456]const res = selectSort(arr)console.log("🚀 ~ res:", res)