-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmerge-sort.js
44 lines (38 loc) · 1020 Bytes
/
merge-sort.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
const merge = (arr1, arr2) => {
let results = [];
let i = 0;
let j = 0;
while(i < arr1.length && j < arr2.length) {
console.log(i, j);
if(arr2[ j ] >= arr1[ i ]) {
console.log(i, "Loop1");
results.push(arr1[ i ]);
i++;
} else {
console.log(j, "Loop2");
results.push(arr2[ j ]);
j++;
}
}
// if one of the array is exhausted
while(i < arr1.length) {
results.push(arr1[ i ]);
i++;
}
while(j < arr2.length) {
results.push(arr2[ j ]);
j++;
}
console.log("result", results);
return results;
};
// function for Merge sort
function mergeSort(arr) {
if(arr.length <= 1) return arr;
let mid = Math.floor(arr.length / 2);
let left = mergeSort(arr.slice(0, mid));
let right = mergeSort(arr.slice(mid)); // mid to end
console.log(left, "left", right, "right");
return merge(left, right);
}
mergeSort([ 10, 24, 76, 73]);