编辑代码

function swap(arr, a, b){
  const tmp = arr[a]
  arr[a] = arr[b]
  arr[b] = tmp
}
function selectionSort(arr){
  const newArr = arr.slice()
  const len = newArr.length
  for (let i = 0; i< len; i++){
    let minIndex = i // 保存最小下标
    let minVal = newArr[i]
    for(let j = i+1; j<len; j++){
      if (newArr[minIndex] > newArr[j]) { // 当前小于基准的值时,将最小值设为当前下标,然后继续向后比较,知道最后
        minIndex = j
        minVal = arr[j]
      }
    }

    // 判断最小值下标是否改变,如果是交换位置
    if (i !== min) {
      // es6 交换
      [newArr[i], newArr[minIndex]] = [newArr[minIndex], newArr[i]]
      // swap(newArr, i, min)
    }
  }
  return newArr
}
const newArr = selectionSort([3,5,7,1,2,43,54,1])
console.log(newArr)