lgrthms
Version:
Algorithms and data structures for your JavaScript and TypeScript projects 🧑💻
21 lines (20 loc) • 702 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.selectionSort = void 0;
const Comparator_1 = require("../../utils/Comparator");
const arrays_1 = require("../../utils/arrays");
// O(n^2) time | O(1) space
function selectionSort(array, compareFn) {
const comparator = new Comparator_1.Comparator(compareFn);
for (let i = 0; i < array.length - 1; i++) {
let minIdx = i;
for (let j = i + 1; j < array.length; j++) {
if (comparator.isLessThan(array[j], array[minIdx])) {
minIdx = j;
}
}
(0, arrays_1.swap)(array, i, minIdx);
}
return array;
}
exports.selectionSort = selectionSort;