algs-adt
Version:
An npm package for using data structures like queues or graphs in javascript or typescript
44 lines (43 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeSort = void 0;
function mergeSort(list) {
if (list.size() <= 1) {
return list;
}
var mid = Math.floor(list.size() / 2);
var left = list.subList(0, mid);
var right = list.subList(mid, list.size() - mid);
mergeSort(left);
mergeSort(right);
var i = 0;
var j = 0;
var k = 0;
var leftSize = left.size();
var rightSize = right.size();
while (i < leftSize && j < rightSize) {
var elemLeft = left.getElement(i);
var elemRight = right.getElement(j);
if (list.compareFunction(elemRight, elemLeft) === -1) {
list.changeInfo(elemRight, k);
j += 1;
}
else {
list.changeInfo(elemLeft, k);
i += 1;
}
k += 1;
}
while (i < leftSize) {
list.changeInfo(left.getElement(i), k);
i += 1;
k += 1;
}
while (j < rightSize) {
list.changeInfo(right.getElement(j), k);
j += 1;
k += 1;
}
return list;
}
exports.mergeSort = mergeSort;