UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

42 lines (29 loc) 1.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _Sort = _interopRequireDefault(require("../Sort")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class SelectionSort extends _Sort.default { sort(originalArray) { // Clone original array to prevent its modification. const array = [...originalArray]; for (let i = 0; i < array.length - 1; i += 1) { let minIndex = i; // Call visiting callback. this.callbacks.visitingCallback(array[i]); // Find minimum element in the rest of array. for (let j = i + 1; j < array.length; j += 1) { // Call visiting callback. this.callbacks.visitingCallback(array[j]); if (this.comparator.lessThan(array[j], array[minIndex])) { minIndex = j; } } // If new minimum element has been found then swap it with current i-th element. if (minIndex !== i) { [array[i], array[minIndex]] = [array[minIndex], array[i]]; } } return array; } } exports.default = SelectionSort;