<!DOCTYPE html>
<head>
<script type="text/javascript" >
var count=0;
var A=['x','x','x','x','x','x','x','x','x',2,4,5,7,1,2,3,6,'x'];
document.write("<br/>数组A :")
for (var n = 0; n < A.length; n++) {
document.write(A[n] + " ");
}
document.write("<br/>")
function mergeSort(A,first,last){
var tempA=new Array();
if(first<last){
var mid = (first + last)>>>1;//求中位数
mergeSort(A,first,mid,tempA);
mergeSort(A,mid+1,last,tempA);
merge(A,first,mid,last,tempA);
}
//输出结果
document.write("<br/>临时数组tempA :第"+ count++ +"次执行的结果是:")
for (var n = 0; n < tempA.length; n++) {
document.write(tempA[n] + " ");
}
document.write("<br/>")
return A
}
function merge(A,first,mid,last,tempA){
var n1=first,n2=mid+1;
var m=mid,L=last;
var i=0;
while(n1<=m && n2<=L){
if(A[n1]<A[n2]){
tempA[i]=A[n1];
n1++;
i++;
}else{
tempA[i]=A[n2];
n2++;
i++;
}
}
while(n1<=m){
tempA[i]=A[n1];
n1++;
i++;
}
while(n2<=L){
tempA[i]=A[n2];
n2++;
i++;
}
for (n1 = 0; n1 < i; n1++)
A[first + n1] = tempA[n1];//把临时数组copy到A中
}
</script>
</head>
<body>
<button type="button" onclick="mergeSort(A,9,16);alert('A的排序结果:'+A);">mergeSort</button>
</body>
</html>
算法学习—002—js实现归并排序—mergeSort
最新推荐文章于 2023-05-04 17:51:50 发布