UNPKG

ts-sort-shell

Version:
47 lines (42 loc) 1.58 kB
/*! * (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 }); })));