JavaScript排序算法——归并排序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>归并排序</title> <!--<link rel="stylesheet" type="text/css" href="../style/fdt.css" />--> <script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="../js/jquery.easydrag.handler.beta2.js"></script> <script type="text/javascript"> $(document).ready( function() { var array_1 = [9,8,7,6,5,4,3,2,1]; alert(array_1); /*mergeSort*/ //迭代实现 alert(mergeSort(array_1)); } ); </script> <style type="text/css"> * { padding:0; margin:0; } body { padding: 100px; font-size: 15px; } </style> <script type="text/javascript"> function merge(left,right){ var result=[]; while(left.length>0 && right.length>0){ if(left[0]<right[0]){ result.push(left.shift()); }else{ result.push(right.shift()); } } alert(" left="+left+" right"+right+" result="+result); alert(result.concat(left).concat(right)); return result.concat(left).concat(right); } function mergeSort(items){ if(items.length == 1){ return items; } var middle=Math.floor(items.length/2), left=items.slice(0,middle), right=items.slice(middle); alert(" middle="+middle+" items.length="+items.length+" left="+left+" right"+right+" items"+items); return merge(mergeSort(left),mergeSort(right)); } </script> </head> <body> <div>归并排序</div> </body> </html>
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5179416.html