ts-sort-shell
Version:
shell sort an array in typescript
47 lines (42 loc) • 1.58 kB
JavaScript
/*!
* (c) 2019-2020 jackieli 西门互联
* https://github.com/jackieli123723/ts-sort-array
* http://issue.lilidong.cn
* Released under the MIT License.
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.tsSortShell = {}));
}(this, (function (exports) { 'use strict';
function shellSortSync(arr) {
var len = arr.length, temp, gap = 1;
while (gap < len / 3) {
//动态定义间隔序列
gap = gap * 3 + 1;
}
for (gap; gap > 0; gap = Math.floor(gap / 3)) {
for (var i = gap; i < len; i++) {
temp = arr[i];
var j = i - gap;
for (; j >= 0 && arr[j] > temp; j -= gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = temp;
}
}
return arr;
}
function shellSort(arr, callback) {
var result = shellSortSync(arr);
callback && typeof callback == 'function' && callback(result);
}
function shellSortAsync(arr) {
var result = shellSortSync(arr);
return Promise.resolve(result);
}
exports.shellSort = shellSort;
exports.shellSortAsync = shellSortAsync;
exports.shellSortSync = shellSortSync;
Object.defineProperty(exports, '__esModule', { value: true });
})));