mh-two-thousand-and-two
2024-04-12 7fc6dbf547b8899d949b67cdec36b96a7d1701c7
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
26
var isSorted = require('./isSorted');
exports = function(arr) {
    var cmp =
        arguments.length > 1 && arguments[1] !== undefined
            ? arguments[1]
            : isSorted.defComparator;
    if (arr.length <= 1) return arr;
    var middle = floor(arr.length / 2);
    var left = arr.slice(0, middle);
    var right = arr.slice(middle);
    return merge(exports(left, cmp), exports(right, cmp), cmp);
};
function merge(left, right, cmp) {
    var ret = [];
    var i = 0;
    var j = 0;
    while (i < left.length && j < right.length) {
        cmp(left[i], right[j]) < 0 ? ret.push(left[i++]) : ret.push(right[j++]);
    }
    while (i < left.length) ret.push(left[i++]);
    while (j < right.length) ret.push(right[j++]);
    return ret;
}
var floor = Math.floor;
 
module.exports = exports;