SOURCE

// 希尔排序,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
    }
  }
}

var gaps = [50, 20, 10, 5, 2, 1];
var arr = [];
for(var i = 0; i < 100; i++) {
  var num = parseInt(Math.random().toString().slice(2, 6));
  arr.push(num)
}

shellSort(arr, gaps);
console.log(arr);
console 命令行工具 X clear

                    
>
console