UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

38 lines (27 loc) 1.13 kB
"use strict"; 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;