Skip to content

Commit 8b724ad

Browse files
committed
add MergeSort
1 parent 191549c commit 8b724ad

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

‎JavaScript/Sort/MergeSort.js‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
module.exports = function MergeSort(nums) {
2+
if(nums === null || nums.length <= 1) return;
3+
MergeSortPart(nums, 0, nums.length-1);
4+
}
5+
6+
function MergeSortPart(nums, l, r) {
7+
if(l === r) {
8+
return;
9+
}
10+
var mid = l + parseInt((r - l) / 2);
11+
MergeSortPart(nums, l, mid);
12+
MergeSortPart(nums, mid + 1, r);
13+
Merge(nums, l, mid, r);
14+
}
15+
16+
function Merge(nums, l, mid, r) {
17+
var help = new Array(r - l + 1);
18+
var i = 0;
19+
var p1 = l;
20+
var p2 = mid + 1;
21+
while(p1 <= mid && p2 <= r) {
22+
help[i++] = nums[p1] > nums[p2] ? nums[p2++] : nums[p1++];
23+
}
24+
while(p1 <= mid) {
25+
help[i++] = nums[p1++];
26+
}
27+
while(p2 <= r) {
28+
help[i++] = nums[p2++];
29+
}
30+
for(i = 0; i < help.length; i++) {
31+
nums[l+i] = help[i];
32+
}
33+
}

‎JavaScript/Sort/Test.js‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var InsertSort = require('./InsertSort');
33
var SelectSort = require('./SelectSort');
44
var HeapSort = require('./HeapSort');
55
var QuickSort = require('./QuickSort');
6+
var MergeSort = require('./MergeSort');
67

78
function generateRandomAray(maxSize, maxValue) {
89
var n = parseInt((maxSize+1)*Math.random());
@@ -55,7 +56,8 @@ for(var i = 0; i < testTime; i++) {
5556
// InsertSort(arr1);
5657
// SelectSort(arr1);
5758
// HeapSort(arr1);
58-
QuickSort(arr1);
59+
// QuickSort(arr1);
60+
MergeSort(arr1);
5961
comparator(arr2);
6062
if(!isEqual(arr1, arr2)) {
6163
succeed = false;

0 commit comments

Comments
 (0)