File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ var InsertSort = require('./InsertSort');
33var SelectSort = require ( './SelectSort' ) ;
44var HeapSort = require ( './HeapSort' ) ;
55var QuickSort = require ( './QuickSort' ) ;
6+ var MergeSort = require ( './MergeSort' ) ;
67
78function 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 ;
You can’t perform that action at this time.
0 commit comments