UNPKG

ts-sort-heap

Version:
48 lines (47 loc) 1.35 kB
"use strict"; 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;