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
posted on 2021-03-17 19:32  李起桉  阅读(67)  评论(0)    收藏  举报