选择排序
- 选择排序原理
- 外层循环控制循环的次数,每次循环找出一个最大值,当集合中只剩下一个元素没有被选中位最大值的时候,说明它是最小值,可以减少一次循环,所以循环的次数是集合的长度-1
- 内层循环找集合中的最大元素
- 第一次循环,找出集合中最大的元素,放在元素的最后一位
- 第二次循环,最后一位已经是集合中的最大的元素了,所以不用再对其进行比较,找出前边元素中的最大的元素,放入到倒数第二位中
- 第三次循环,与第二次类似,找出前边的最大的元素,放入到倒数第三位中
- 依此类推,对其他元素做同样的操作
- 选择排序源码
const arr = [5, 2, 4, 7, 1, 9, 0, 3]
const compare = (a, b) => {
if (a < b) return true
else return false
}
const exchange = (arr, a, b) => {
let temp = arr[a]
arr[a] = arr[b]
arr[b] = temp
}
const sort = arr => {
for (let i = 0; i < arr.length -1; i++) {
let maxIndex = 0
for (let j = 1; j < arr.length - i; j++) {
if (compare(arr[maxIndex], arr[j])) {
maxIndex = j
}
}
exchange(arr, maxIndex, arr.length - i -1)
}
return arr
}
console.log(sort(arr))