插入排序

基本思想:把要排序的数组分成两部分,第一部分为已经排好序的,另一部分为待排序部分。每次从待排序部分拿一个元素,和已排序部分元素依次进行比较,并在适当位置插入。

// js实现
function insertSort(arr){
  var x;
  for(var i = 1; i < arr.length; i ++){    // 外层循环进行待排序部分的维护
    x = arr[i];        // 把要进行排序的值缓存起来,避免覆盖后丢失
    for(var j = i - 1; arr[j] > x; j --){    // 内层循环进行已排序部分的维护
      arr[j + 1] = arr[j];    // 将元素依次向后挪
    }
    if(arr[j + 1] != x ){
      arr[j + 1] = x;  // 在适当位置插入
    }
  }
  return arr;
}


var arr = [3,1,2,5,8,4,7,2,9];
var result = insertSort(arr);
console.log(arr);    // [1, 2, 2, 3, 4, 5, 7, 8, 9]

你可能感兴趣的:(插入排序)