1.思路
(1)选定第一个索引位置,然后和后面元素依次比较
(2)如果后面的队员, 小于第一个索引位置的队员, 则交换位置
(3)经过一轮的比较后, 可以确定第一个位置是最小的
(4)然后使用同样的方法把剩下的元素逐个比较即可
(5)可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后
2.复杂度
比较次数:O(N^2)
交换次数:O(N)
3.代码实现
function ArrayList(){ this.array = [] ArrayList.prototype.insert = function(item){ this.array.push(item) } ArrayList.prototype.selectionSort = function(){ let length = this.array.length for(let i=0; i<length-1; i++){ for(let j=i+1; j<length; j++){ if(this.array[i]>this.array[j]){ let temp = this.array[i] this.array[i] = this.array[j] this.array[j] = temp } } } } }
// 测试 var list = new ArrayList() list.insert(3) list.insert(6) list.insert(4) list.insert(2) list.insert(11) list.insert(10) list.insert(5) list.selectionSort() console.log(list) // 2,3,4,5,6,10,11
浙公网安备 33010602011771号