手写选择排序算法
用 JavaScript 实现选择排序算法
问题
手写实现选择排序算法。
解答
选择排序是一种简单直观的排序算法。工作原理是:在未排序序列中找到最小元素,放到已排序序列的末尾,重复此过程直到所有元素排序完成。
算法步骤
- 在未排序序列中找到最小元素,存放到排序序列的起始位置
- 从剩余未排序元素中继续寻找最小元素,放到已排序序列的末尾
- 重复步骤 2,直到所有元素排序完毕
代码实现
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1; i++) {
minIndex = i;
// 在未排序部分找最小值
for (var j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 交换位置
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
时间复杂度
- 最佳情况:O(n²)
- 最差情况:O(n²)
- 平均情况:O(n²)
关键点
- 每次从未排序部分选出最小元素,放到已排序部分的末尾
- 需要两层循环:外层控制已排序部分的边界,内层查找最小值
- 时间复杂度始终为 O(n²),不受数据初始状态影响
- 是不稳定排序算法,相同元素的相对位置可能改变
目录