-
Notifications
You must be signed in to change notification settings - Fork 4
JavaScript Sellection Sort Algorithm
Ramesh Fadatare edited this page Jul 11, 2019
·
1 revision
const selectionSort = (array, compareFn = defaultCompare) => {
const { length } = array;
let indexMin;
for (let i = 0; i < length - 1; i++) {
indexMin = i;
// console.log('index ' + array[i]);
for (let j = i; j < length; j++) {
if (compareFn(array[indexMin], array[j]) === Compare.BIGGER_THAN) {
// console.log('new index min ' + array[j]);
indexMin = j;
}
}
if (i !== indexMin) {
// console.log('swap ' + array[i] + ' with ' + array[indexMin]);
swap(array, i, indexMin);
}
}
return array;
};
function swap(array, a, b) {
/* const temp = array[a];
array[a] = array[b];
array[b] = temp; */
[array[a], array[b]] = [array[b], array[a]];
}
const Compare = {
LESS_THAN: -1,
BIGGER_THAN: 1,
EQUALS: 0
};
function defaultCompare(a, b) {
if (a === b) {
return Compare.EQUALS;
}
return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN;
}
let array = [2,1,5,4,3,8,7,6];
array = selectionSort(array);
console.log(array);
Output:
[1, 2, 3, 4, 5, 6, 7, 8]