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]
}
function selectionSort() {
var len = array.length, indexMin
for (let i = 0; i < len - 1; i++) {
indexMin = i
for (let j = i; j < len; j++) {
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`)