编辑代码

var array = []

console.log('== 选择排序 ==\n')

console.log(`选择排序算法是一种原址比较排序算法。选择排序大致的思路是找到数据结构中的最小值
并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。\n`)

function createRandomArray(size) {
    var arr = []
    for (let i = 0; i < size; i++) {
        arr.push(Math.round(Math.random() * size))
    }
    array = [1,6,3,2,6,8,9,3,2,6]
    // arr
    // return arr
}

function selectionSort() {
    var len = array.length, indexMin
    for (let i = 0; i < len - 1; i++) {
        indexMin = i
        for (let j = i; j < len; j++) {
            // 找出i开始最小数下标
            if (array[j] < array[indexMin]) {
                indexMin = j
            }
        }
        // 最小数与外层循环下标位数据交换
        if (i != indexMin) {
            swap(i, indexMin)
        }
        // 把最小的移动到前面而不是把最大的移动到后面
    }
}

// 位置交换
function swap(ind1, ind2) {
    var aux = array[ind1]
    array[ind1] = array[ind2]
    array[ind2] = aux
}

createRandomArray(8)
console.time('选择排序')
selectionSort()
console.timeEnd('选择排序')
console.log(array)

console.log(`\n 分析:
经过一轮外循环后最大数9以排至数组尾部,后续不用再对9进行比较,内层循环范围缩小至0-(n-1-i)\n`)