踩坑日记 - 排序之选择排序
1、选择排序
2、排序原理
通过遍历依次找到数组中最小的元素,依次放置数组最前面
3、排序步骤
1)从原始数组中找出最小的元素
2)将找到的最小元素放在数组最前面
3)从剩下的元素只能寻找最小的元素
4)将找的元素放在之前最小元素的后面
5)重复以上1至4步骤,直至排序完毕
4、复杂度
1)时间复杂度
O(n²)
时间复杂度最稳定的算法之一,始终是O(n²)
2)空间复杂度
O(1)
5、使用环境
数据规模小;
6、优点
不用占据额外的内存空间
7、例子
代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>排序 - 选择排序</title> </head> <body> </body> </html> <script> const originArr = [20, 25, 1, 2, 78, 100, 56, 5, 22,66]; const len = originArr.length; console.log('这是数组原序列:[20, 25, 1, 2, 78, 100, 56, 5, 22,66]') originArr.forEach((item1, i) => { let minIndex = i; for(let j = i; j < len; j++) { if (originArr[j] < originArr[minIndex]) { const temp = originArr[minIndex]; originArr[minIndex] = originArr[j]; originArr[j] = temp; minIndex = j; } } console.log('这是第' + (i + 1) + '次循环的结果:' + JSON.parse(JSON.stringify(originArr))) }) console.log('这是最终结果:' + originArr) </script>
结果:
参考: