-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmerge_sort.js
More file actions
65 lines (57 loc) · 1.2 KB
/
merge_sort.js
File metadata and controls
65 lines (57 loc) · 1.2 KB
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
64
65
function RandomArray(size) {
var arr = [];
for (var i = 0; i < size; i++)
{
arr.push(Math.ceil(Math.random() * 100));
}
return arr;
}
function mergesort(m) {
if (m.length < 2)
{
return m;
}
else
{
var middle = Math.floor(m.length / 2),
// slice takes 2nd param as length
left = mergesort(m.slice(0, middle)),
right = mergesort(m.slice(middle)),
result = merge(left, right);
return result;
}
}
// Given 2 sorted arrays, do the merge.
function merge(left_array, right_array) {
var left_ptr = 0,
right_ptr = 0,
sorted_arr = [], left, right;
while (left_ptr < left_array.length &&
right_ptr < right_array.length)
{
left = left_array[left_ptr];
right = right_array[right_ptr];
if (left < right)
{
sorted_arr.push(left);
left_ptr++;
}
else
{
sorted_arr.push(right);
right_ptr++;
}
}
while (left_ptr < left_array.length)
{
sorted_arr.push(left_array[left_ptr++]);
}
while (right_ptr < right_array.length)
{
sorted_arr.push(right_array[right_ptr++]);
}
return sorted_arr;
}
var arr = RandomArray(10);
console.log("Original Array: " + arr);
console.log("Sorted Array: " + mergesort(arr));