选择排序
原理:
首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。
思路:
- 在长度为N的数组中,第一次遍历,我们可以先假设第一个数为最小的,从n-1个数开始遍历,找到最小的和第一个数交换。
- 第二次,假设第二个数为最小的,从n-2 个数开始遍历,找到最小的数和第二个数交换。
....... - 重复以上操作直到第 n-1 次遍历最小的数和第 n-1 个数交换,排序完成。

实现代码如下
function selectionSort(arr) {
const length = arr.length;
for (let i = 0; i < length - 1; i++) {
let minIndex = i; //假设第i次循环,第i个数为最小的
for (let j = i + 1 ; j < length ; j++) {
if (arr[j] < arr[minIndex]) {
//假设最小的数值大于arr[j] ,令 minIndex = j 保存最小的元素索引
minIndex = j;
}
}
if (minIndex !== i) {
//交换
const temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
时间复杂度: 最好和最坏的情况都是O(n2)
空间复杂度: O(1)

浙公网安备 33010602011771号