SOURCE

function selectionMinSort(arr){
  var n = arr.length, minIndex, j, tmp;
  for(var i = 0; i < n; i++){
    minIndex = i;
    for(j = i + 1; j < n; j++){
      if(arr[j] < arr[minIndex]){
        minIndex = j
      }
    }
    tmp = arr[minIndex]
    arr[minIndex] = arr[i]
    arr[i]=tmp
  }
}
function selectionMaxSort(arr){
  var n = arr.length, maxIndex, i, j, tmp;
  for(i = n - 1; i > 0; i--){
    maxIndex = i;
    for(j = i - 1; j > 0; j--){
      if(arr[j] > arr[maxIndex]){
        maxIndex = j
      }
    }
    tmp = arr[maxIndex]
    arr[maxIndex] = arr[i]
    arr[i]=tmp
  }
  return arr
}

// 插入排序
function insertionSort(arr){
  var n = arr.length;
  for(var i = 1; i < n; i++){
    var key = arr[i], j = i - 1;
    while(j >= 0 && arr[j] > key){
      arr[j + 1] = arr[j]
      j--
    }
    arr[j + 1] = key
  }
  return arr
}
function binaryInsertionSort(arr){
  for(var i = 1; i < arr.length; i++){
    var key = arr[i], left = 0; right = i - 1;
    while(left <= right){
      var mid = parseInt((left + right) / 2);
      if(key < arr[mid]) {
        right = mid - 1
      }else {
        left = mid + 1
      }
    }
    for(j = i - 1; j >= left; j--){
      arr[j + 1] =  arr[j]
    }
    arr[left] = key
  }
  return arr;
}
var result = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
//new selectionMinSort(result)
//var b = new selectionMaxSort(result)
//var c = new insertionSort(result)
var c = new binaryInsertionSort(result)
console.log(c)

function shellSort(arr) {
    var len = arr.length,
        temp,
        gap = 1;
    console.time('希尔排序耗时:');
    while(gap < len/5) {          //动态定义间隔序列
        gap =gap*5+1;
    }
    for (gap; gap > 0; gap = Math.floor(gap/2)) {
        for (var i = gap; i < len; i++) {
            temp = arr[i];
            for (var j = i-gap; j >= 0 && arr[j] > temp; j-=gap) {
                arr[j+gap] = arr[j];
            }
            arr[j+gap] = temp;
        }
    }
    console.timeEnd('希尔排序耗时:');
    return arr;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
shellSort(arr)
console 命令行工具 X clear

                    
>
console