归并排序法

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <meta charset="utf-8">
 5   <meta name="viewport" content="width=device-width">
 6   <title>归并排序法</title>
 7 </head>
 8 <body>
 9   归并排序是一种分治算法,其思想是将原始数组分割成较小的数组,直到每个小数组只有一个位置,接着将小数组归并成较大数组,知道最后只有一个排序完毕的大数组。
10 </body>
11 </html>
 1 var array=[32,12,45,2,57,1,35,7,9,23,32];
 2 
 3 function mergeRec(array){
 4   
 5   var length=array.length;
 6   if(length==1)
 7     return array;
 8   var mid = Math.floor(length/2);
 9   var left = array.slice(0,mid);
10   var right = array.slice(mid,length);
11   
12   return mergeSort(mergeRec(left),mergeRec(right));
13 }
14 
15 function mergeSort(left,right){
16   var result=[];
17   do
18   {
19     if(left[0]>right[0]){
20       result.push(right.shift());
21     }
22     else{
23       result.push(left.shift());
24     }
25   }
26   while(left.length>0&& right.length>0);
27   
28   return result.concat(left).concat(right);
29   
30 }
31 
32 var abcd = mergeRec(array);
33 console.log(abcd);

原文地址:https://www.cnblogs.com/johnhery/p/9790957.html