dist-javascript-algorithms-and-data-structures
Version:
Algorithms and data-structures implemented on JavaScript
38 lines (27 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _Sort = _interopRequireDefault(require("../Sort"));
var _MinHeap = _interopRequireDefault(require("../../../data-structures/heap/MinHeap"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class HeapSort extends _Sort.default {
sort(originalArray) {
const sortedArray = [];
const minHeap = new _MinHeap.default(this.callbacks.compareCallback); // Insert all array elements to the heap.
originalArray.forEach(element => {
// Call visiting callback.
this.callbacks.visitingCallback(element);
minHeap.add(element);
}); // Now we have min heap with minimal element always on top.
// Let's poll that minimal element one by one and thus form the sorted array.
while (!minHeap.isEmpty()) {
const nextMinElement = minHeap.poll(); // Call visiting callback.
this.callbacks.visitingCallback(nextMinElement);
sortedArray.push(nextMinElement);
}
return sortedArray;
}
}
exports.default = HeapSort;