12345678910111213141516171819202122232425 |
- var swap = require('./swap');
- var isSorted = require('./isSorted');
- exports = function(arr) {
- var cmp =
- arguments.length > 1 && arguments[1] !== undefined
- ? arguments[1]
- : isSorted.defComparator;
- var len = arr.length;
- var gap = Math.floor(len / 2);
- while (gap > 0) {
- for (var i = gap; i <= len - gap; i++) {
- for (var j = i; j > 0; j -= gap) {
- if (cmp(arr[j], arr[j - gap]) < 0) {
- swap(arr, j, j - gap);
- } else {
- break;
- }
- }
- }
- gap = Math.floor(gap / 2);
- }
- return arr;
- };
- module.exports = exports;
|