SOURCE

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 命令行工具 X clear

                    
>
console