forked from connor11528/cs-fundamentals
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsorting_algorithms.js
63 lines (51 loc) · 1.17 KB
/
sorting_algorithms.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function bubbleSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < (arr.length - i - 1); j++) {
if (arr[j] > arr[j+1]) {
const lesser = arr[j+1];
arr[j+1] = arr[j];
arr[j] = lesser;
}
}
}
return arr;
}
function selectionSort(arr) {
for(let i = 0; i < arr.length; i++){
let indexOfMin = i;
for(let j = i + 1; j < arr.length; j++){
if(arr[j] < arr[indexOfMin]){
indexOfMin = j;
}
}
if(indexOfMin !== i){
const lesser = arr[indexOfMin];
arr[indexOfMin] = arr[i];
arr[i] = lesser;
}
}
return arr;
}
function mergeSort(arr) {
if(arr.length === 1){
return arr;
}
// determine centerpoint of array
const center = Math.floor(arr.length / 2);
const left = arr.slice(0, center);
const right = arr.slice(center);
return merge(mergeSort(left), mergeSort(right));
}
// take two sorted arrays and merge them
// together into one sorted array
function merge(left, right) {
let results = [];
while(left.length && right.length){
if(left[0] < right[0]){
results.push(left.shift());
} else {
results.push(right.shift());
}
}
return [...results, ...left, ...right];
}