javascript版归并排序mergeSort
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>
作者:曹超