pazingaa
10/24/2017 - 3:11 AM

JS Bin// source http://jsbin.com/qutesop

JS Bin// source http://jsbin.com/qutesop

// 冒泡排序
var bubbleSort = (arr) =>{
  var len = arr.length;
  if(len <= 1 ) {
    return arr
  }
  for(let i = 0; i < len; i++) {
    for(let j = 0; j < len - 1 - i; j++) {
      // exchange
      if(arr[j] > arr[j+1]) {
        var temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
  return arr;
}

var test = [2,76,4,100,3];
console.log("Now, sort the array [" + test + "]");
console.log("After bubble-sort, the array is [" + bubbleSort(test) + "]");

// 插入排序
var insertSort = (arr) => {
  var len = arr.length;
  if(len <= 1 ) {
    return arr
  }
  for(let i = 1; i < len; i++) {
    var temp = arr[i];
    var j = i - 1;
    while(arr[j] > temp && j >= 0) {
      arr[j+1] = arr[j];
      var pos = j; // 记录插入位置
      j --;
    }
    
    arr[pos] = temp;
    
  }
  return arr;
}
console.log("After insert-sort, the result is ["+insertSort(test) + "]");

// 二分法是改进的插入排序
// 希尔排序也是在插入排序基础上的方法