什么是选择排序
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
// 下标 0 1 2 3 4 5 6 7 8
console.log('原始数组arr: ', arr)
/**
* 第几次循环 假设谁是最小值 和谁交换 循环开始的值
* k == 0 1 0 0 1
* k == 1 2 1 1 2
* k == 2 3 2 2 3
*
*/
for (var k = 0; k < arr.length; k++) {
var minIndex = k // 假设当前最小数值 为 下标 0 的项
for (var i = k + 1; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i
}
}
// 交换 真实最小的值 与 下标 0 的值
var temp = arr[k]
arr[k] = arr[minIndex]
arr[minIndex] = temp
}
console.log('选择排序结束后的 arr: ', arr)
// // 第二轮
// var minIndex = 1 // 假设当前最小数值为 下标 1 的项
// for (var i = 2; i < arr.length; i++) {
// if (arr[minIndex] > arr[i]) {
// minIndex = i
// }
// }
// // 交换 真实 最小的值 与 下标 1 的值
// var temp = arr[1]
// arr[1] = arr[minIndex]
// arr[minIndex] = temp
// console.log('第二轮 选择排序结束后的 arr: ', arr)
// // 第三轮
// var minIndex = 2
// for (var i = 3; i < arr.length; i++) {
// if (arr[minIndex] > arr[i]) {
// minIndex = i
// }
// }
// 交换 真实 最小的值 与 下标 2 的值
// var temp = arr[2]
// arr[2] = arr[minIndex]
// arr[minIndex] = temp
// console.log('第三轮 选择排序结束后的 arr: ', arr)