选择排序
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
0 1 2 3 4 5 6 7 8
console.log('原始数组: ', arr)
第一轮选择排序
var minIndex = 0 // 假设当前最小值的下标 为 0
for (var i = 1; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) { // 如果当前分支执行, 说明在数组中找到了一个 比假设的最小值要小的 元素
minIndex = i
}
}
上边的 for 循环执行完毕后, minIndex 记录的就是 真实的最小的值的下标 此时交换 真实最小值 与 我们假设的最小值
var temp = arr[0] // 存储 数组下标0的值
arr[0] = arr[minIndex] // 将 下标0的值重新赋值 当前数组中最小的值
arr[minIndex] = temp // 将 下标 minIndex 的值 重新赋值为 arr[0] 原本的值 此时就完成了 真实最小值与假设最小值位置的交换
console.log('第 1 轮选择排序后的数组: ', arr)
第二轮选择排序
var minIndex = 1 // 假设当前最小值的下标为 1
for (var i = 2; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i
}
}
for 循环执行完毕 minIndex 就是真实的最小值的下标, 此时交换 真实最小值与假设的最小值的位置即可
var temp = arr[1]
arr[1] = arr[minIndex]
arr[minIndex] = temp
console.log('第 2 轮选择排序后的数组: ', arr)
第三轮选择排序
var minIndex = 2 // 假设当前最小值的下标为 2
for (var i = 3; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i
}
}
for 循环执行完毕 minIndex 就是真实的最小值的下标, 此时交换 真实最小值与假设的最小值的位置即可\
var temp = arr[2]
arr[2] = arr[minIndex]
`arr[minIndex] = temp
// console.log('第 3 轮选择排序后的数组: ', arr)