function getRands(n = 10) {
let arr = []
for (let i = 0; i < n; i++) {
arr.push(~~(Math.random() * 100))
}
console.log('随机数组:' + arr.toString())
return arr
}
function swap(arr, i, j) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
// a = a ^ b; b = a ^ b; a = b ^ a
// [a,b] = [b,a]
// a = [b, b = a][0]
}
function bubbleSort(arr) {
let len = arr.length
for (let i = 0; i < len - 1; i++) { // 最后一次循环没有意义
for (let j = 0, count = len - i - 1; j < count; j++) { // 最后一次比较没有意义
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1)
}
}
console.log(`第${i + 1}轮冒泡后:` + arr.toString())
}
console.log('冒泡排序结束:' + arr.toString())
}
function selectionSort(arr) {
let min, len = arr.length
for (let i = 0; i < len - 1; i++) { // 最后一次循环没有意义
min = i
for (let j = i + 1; j < len; j++) {
if (arr[min] > arr[j]) {
min = j
}
}
swap(arr, i, min)
console.log(`第${i + 1}轮选择后:` + arr.toString())
}
console.log('选择排序结束:' + arr.toString())
}
bubbleSort(getRands())
console