ts-sort-heap
Version:
heap sort an array in typescript
48 lines (47 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.heapSortAsync = exports.heapSort = exports.heapSortSync = void 0;
var arrLength;
function maxHeap(input, i) {
var left = 2 * i + 1;
var right = 2 * i + 2;
var max = i;
if (left < arrLength && input[left] > input[max]) {
max = left;
}
if (right < arrLength && input[right] > input[max]) {
max = right;
}
if (max != i) {
swap(input, i, max);
maxHeap(input, max);
}
}
function swap(input, indexA, indexB) {
var temp = input[indexA];
input[indexA] = input[indexB];
input[indexB] = temp;
}
function heapSortSync(input) {
arrLength = input.length;
for (var i = Math.floor(arrLength / 2); i >= 0; i -= 1) {
maxHeap(input, i);
}
for (var i = input.length - 1; i > 0; i--) {
swap(input, 0, i);
arrLength--;
maxHeap(input, 0);
}
return input;
}
exports.heapSortSync = heapSortSync;
function heapSort(arr, callback) {
var result = heapSortSync(arr);
callback && typeof callback == 'function' && callback(result);
}
exports.heapSort = heapSort;
function heapSortAsync(arr) {
var result = heapSortSync(arr);
return Promise.resolve(result);
}
exports.heapSortAsync = heapSortAsync;