算法学习—002—js实现归并排序—mergeSort

本文详细介绍了如何使用JavaScript实现并可视化快速排序算法的过程,包括算法实现、代码解析及运行结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值