javascript版归并排序mergeSort

来源:岁月联盟 编辑:exp 时间:2012-07-20

javascript由于语言的一些特性,实现归并排序异常简单。详情看代码:

 
01
<script type="text/javascript">
02
Array.prototype.mergeSort=function(){
03
    var merge=function(left,right){
04
        var final=[];
05
        while(left.length&&right.length){
06
            final.push(left[0]<=right[0]?left.shift():right.shift());
07
        }
08
        return final.concat(left.concat(right));
09
    };
10
 
11
    var len=this.length;
12
    if(len<2){
13
        return this;
14
    }
15
 
16
    var mid=parseInt(len/2),
17
        _left=this.slice(0,mid),
18
        _right=this.slice(mid);
19
    return merge(_left.mergeSort(),_right.mergeSort());
20
}
21
 
22
var arr=[];
23
for(var i=0;i<50;i++){
24
    arr.push(Math.floor(Math.random()*100));
25
}
26
document.write("original array is: "+arr+"<br/>");
27
 
28
console.time("merge");
29
document.write("sorted array is: "+arr.mergeSort());
30
console.timeEnd("merge");
31
</script>


作者:曹超