选择排序
这个算法倒是非常容易理解,就是在数据结构中找到最小值,并放置在第一位,然后找第二小的值,以此类推。
class ArrayList{
constructor(){
this.array = []
}
insert(item){
this.array.push(item)
}
toString(){
return this.array.join()
}
swap(array,idx1,idx2){
[array[idx1],array[idx2]] = [array[idx2],array[idx1]] // ES6解构赋值
}
selectionSort(){
var len = this.array.length,indexMin;
for(var i = 0;i<len-1;i++){ // 直到倒数第二项
indexMin = i;
for(var j = i+1;j<len;j++){ // 找到比当前项还小的项的索引值
if(this.array[indexMin]>this.array[j]){
indexMin = j
}
}
if(i !== indexMin){ // 当前项的值不是最小的
this.swap(this.array,i,indexMin) // 交换两个项
}
}
}
}
let list = new ArrayList()
list.insert(6)
list.insert(9)
list.insert(3)
list.insert(4)
list.insert(3)
list.insert(8)
list.insert(9)
list.insert(2)
list.selectionSort()
console.log(list.toString())
// 2,3,3,4,6,8,9,9