ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 描述 选择排序是从数组的开头开始,将第一个元素和其他元素作比较,检查完所有的元素后,最小的放在第一个位置,接下来再开始从第二个元素开始,重复以上一直到最后。 <br> <br> # 动图演示 ![](https://box.kancloud.cn/2015-10-24_562b1f3177b83.gif) <br> ![](https://box.kancloud.cn/1c7e20f306ddc02eb4e3a50fa7817ff4_811x248.jpg) <br> <br> # 实现 * 外层循环的`i`表示第几轮,`arr[i]`就表示当前轮次最靠前(小)的位置; * 内层从`i`开始,依次往后数,找到比开头小的,互换位置即可 ~~~ function selectionSort (arr) { let n = arr.length for (let i = 0; i < n - 1; i++) { let minIndex = i for (let j = i + 1; j < n; j++) { if (arr[minIndex] > arr[j]) { minIndex = j } } if (minIndex !== i) { [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]] } } return arr } ~~~ <br> <br> # 复杂度 | 最好 | 平均| 最差| 空间复杂度| 稳定性| | :-: | :-: | :-: | :-: | :-: | :-- | | O(n²) | O(n²) |O(n²) | O(1) | No |