'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;