-
Notifications
You must be signed in to change notification settings - Fork 0
/
merge-sort.js
37 lines (30 loc) · 678 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
/*jshint expr:true, boss: true */
var _ = require('underscore'),
lib = require('./lib'),
merge = function(left, right) {
var result = [];
while(left.length > 0 && right.length > 0) {
result.push(
(left[0] <= right[0]) ? left.shift() : right.shift()
);
}
if(left.length > 0) {
return result.concat(left);
} else {
return result.concat(right);
}
},
mergeSort = function(array) {
if(array.length <= 1) {
return array;
}
return merge(
mergeSort(
array.splice(0, array.length/2)
),
mergeSort(array)
);
};
unsorted = lib.randomArray(100);
console.log(unsorted.toString());
console.log(mergeSort(unsorted).toString());