SOURCE

var arr = [3,6,2,4,7,1,9,10,11, 50, 37,25,23,18, 34, 56, 44,29, 5, 90, 42];
/** 插入排序(从小到达) **/
function insertSort(arr) {
  for(var i = 2, len = arr.length; i < len; i++) {
    if(temp < arr[i-1]) {
      arr[0] = arr[i]; // arr[0]作为哨兵
      for(var j = i-1; arr[0] < arr[j]; j--) {
        arr[j+1] = arr[j];
      }
      arr[j+1] = arr[0];
    }
  }
}
// insertSort(arr)

/** 快速排序 **/
function fastSort(arr, start, end) {
  if(start < end){return}
  var pivot = arr[end];
  var i = start -1, j = end;
  while(i < j) {
    while(arr[++i] < pivot);
    while(arr[--j] > pivot);
    if(i < j) {
      // 交换a,b两个值同时不引入变量
      // a = a - b; b = a + b; a = b - a;
      arr[i] = arr[i] - arr[j];
      arr[j] = arr[i] + arr[j];
      arr[i] = arr[j] - arr[i];
    }
  }
  arr[end] = arr[i];
  arr[i] = pivot;
  fastSort(arr, start, i -1);
  fastSort(arr, i + 1, end);
}
// fastSort(arr, 0, arr.length -1);

/** 归并排序 **/
var helpArr=[];
function Merge(arr, low, mid, high) {
  for(var k = 0; k <= high; k++) {
    helpArr[k] = arr[k];
  }
  for(var i = low, j = mid + 1, k = i; i <= mid && j <= high; k++) {
    if(helpArr[i] < helpArr[j]) {
      arr[k] = helpArr[i++];
    } else {
      arr[k] = helpArr[j++];
    }
  }
  while(i <= mid) {
    arr[k++] = helpArr[i++];
  }
  while(j <= high) {
    arr[k++] = helpArr[j++];
  }
}

function MergeSort(arr, low, high) {
  if(low < high) {
    var mid = Math.floor((low + high) / 2);
    MergeSort(arr, low, mid);
    MergeSort(arr, mid+1, high);
    Merge(arr, low, mid, high);
  }
}
// MergeSort(arr, 0, arr.length -1);

/** 希尔排序,gaps是间隔序列 **/
function shellSort(arr, gaps) {
  var arr_len = arr.length;
  var gaps_len = gaps.length;
  for(var g = 0; g < gaps_len; g++) { // 间隔序列长度,比如6个间隔序列
    for(var i = gaps[g]; i < arr_len; i++) {
      // 这里每个进行直接插入排序
      var temp = arr[i];
      for(var j = i; j >= 0 && arr[j-gaps[g]] > temp; j-=gaps[g]) {
        arr[j] = arr[j-gaps[g]]
      }
      arr[j] = temp
    }
  }
}

/** 堆排序(大顶堆) **/
function heapMaxSort(arr) {
  
}

// 根据某个节点,调整堆
function adjustDown(arr, nodeIdx, len) {
  arr[0] = arr[nodeIdx];
  for(var i = 2*nodeIdx; i <= len; i*=2) {
    if(i < len && arr[i] < arr[i+1]) {
      i++
    }
    if(arr[0] >= arr[i]){
      break;
    } else {
      arr[nodeIdx] = arr[i];
      nodeIdx = i;
    }
  }
}

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

/** 选择排序 **/
function selectionSort(arr) {
  var len = arr.length;
  var min_idx;
  for(var i = 0; i < len; i++) {
    min_idx = i;
    for(var j = i + 1; j < len; j++) {
      if(arr[j] < arr[min_idx]) {
        min_idx = j;
      }
    }
    var temp = arr[i];
    arr[i] = arr[min_idx];
    arr[min_idx] = temp;
  }
}


// console.log(arr);
console 命令行工具 X clear

                    
>
console