Skip to content

Commit 08871e2

Browse files
committedMar 24, 2016
Add selection sort
1 parent d10a08f commit 08871e2

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// sample of arrays to sort
2+
var arrayRandom = [9, 2, 5, 6, 4, 3, 7, 10, 1, 8];
3+
var arrayOrdered = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
4+
var arrayReversed = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
5+
6+
// swap function helper
7+
function swap(array, i, j) {
8+
var temp = array[i];
9+
array[i] = array[j];
10+
array[j] = temp;
11+
}
12+
13+
function selectionSort(array) {
14+
var countOuter = 0;
15+
var countInner = 0;
16+
var countSwap = 0;
17+
18+
for(var i = 0; i < array.length; i++) {
19+
countOuter++;
20+
var min = i;
21+
for(var j = i + 1; j < array.length; j++) {
22+
countInner++;
23+
if(array[j] < array[min]) {
24+
min = j;
25+
}
26+
}
27+
if(i !== min) {
28+
countSwap++;
29+
swap(array, i, min);
30+
}
31+
}
32+
33+
console.log('outer:', countOuter, 'inner:', countInner, 'swap:', countSwap);
34+
return array;
35+
}
36+
37+
selectionSort(arrayRandom.slice()); // => outer: 10 inner: 45 swap: 5
38+
selectionSort(arrayOrdered.slice()); // => outer: 10 inner: 45 swap: 0
39+
selectionSort(arrayReversed.slice()); // => outer: 10 inner: 45 swap: 5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// array to sort
2+
var array = [9, 2, 5, 6, 4, 3, 7, 10, 1, 8];
3+
4+
// swap function helper
5+
function swap(array, i, j) {
6+
var temp = array[i];
7+
array[i] = array[j];
8+
array[j] = temp;
9+
}
10+
11+
function selectionSort(array) {
12+
for(var i = 0; i < array.length; i++) {
13+
var min = i;
14+
for(var j = i + 1; j < array.length; j++) {
15+
if(array[j] < array[min]) {
16+
min = j;
17+
}
18+
}
19+
if(i !== min) {
20+
swap(array, i, min);
21+
}
22+
}
23+
return array;
24+
}
25+
26+
console.log(selectionSort(array)); // => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

0 commit comments

Comments
 (0)