JavaScript排序算法之插入排序

插入排序

插入排序每次都只排一个数组项,每一次选择一个项的时候,都会跟前一项进行比较,以升序为例,当插入项比前一项小的时候,就往前一项的前一项在进行比较,直到找到前一项比插入项小的时候,才插入。
JavaScript排序算法之插入排序_第1张图片

class ArrayList{
  constructor(){
    this.array = []
  }
  insert(item){
    this.array.push(item)
  }
  toString(){
    return this.array.join()
  }
  insertionSort(){
    var len = this.array.length, 
    j,
    temp; // 当前项
    for(var i=1;i<len;i++){ // 从第二开始进行比较
      j = i ;
      temp = this.array[i] // 相当于设置一个中间变量,用于比较
      while(j>0 && this.array[j-1]>temp){ // 不断跟中间变量(需要比较的那项)进行比较
        this.array[j] = this.array[j-1]; // 当前项的前一项的值赋给了当前项(相当于前一项往后移)
        j--;
      }
      this.array[j] = temp // 将最终位置的值设置为用于比较的那个中间量
    }
  }
}
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.insertionSort()
console.log(list.toString())
// 2,3,3,4,6,8,9,9

排序小型数组时,此算法比选择排序和冒泡排序性能要好。

你可能感兴趣的:(javascript,数据结构)