javascript由于语言的一些特性,实现归并排序异常简单。详情看代码:
<script type="text/javascript">
Array.prototype.mergeSort=function(){
var merge=function(left,right){
var final=[];
while(left.length&&right.length){
final.push(left[0]<=right[0]?left.shift():right.shift());
}
return final.concat(left.concat(right));
};
var len=this.length;
if(len<2){
return this;
}
var mid=parseInt(len/2),
_left=this.slice(0,mid),
_right=this.slice(mid);
return merge(_left.mergeSort(),_right.mergeSort());
}
var arr=[];
for(var i=0;i<50;i++){
arr.push(Math.floor(Math.random()*100));
}
document.write("original array is: "+arr+"<br/>");
console.time("merge");
document.write("sorted array is: "+arr.mergeSort());
console.timeEnd("merge");
</script>