javaScript实现快速排序

以前一直在用JavaScript,一直没系统学习过这门语言,连原型链都不知道,现在在补《JavaScript高级程序设计》,顺便写个快速排序练手,将标兵放到合适位置上有点复杂,但是个人理解的算法只能这样啦,毕竟没有参考过标准的写法,看过标准代码但是不理解那么简洁背后的思维。

let swap=function(arr,i,j)
{
	let t=arr[i];
	arr[i]=arr[j];
	arr[j]=t;
}
let midset=function(arr,be,ed)
{
	if(ed-be+1<2)
		return arr.length;
	let k=be;
	let p=be+1;
	let q=ed;
	while(p<=q)
	{
		while(p<ed&&arr[p]<=arr[k])
			p++;
		while(q>be&&arr[q]>=arr[k])
			q--;
		if(q<=p)
		{
			swap(arr,k,q);
			k=q;
		}
		else
		{
			swap(arr,k,p);
			swap(arr,k,q);
			k=p;
		}
		p=p+1;
		q=q-1;
	}
	return k;
};
let qs=function(arr,be,ed)
{
	if(ed-be+1<2)
		return;
	let t=midset(arr,be,ed);
	qs(arr,be,t-1);
	qs(arr,t+1,ed);
}
let quicksort=function(arr)
{
	qs(arr,0,arr.length-1);
}
module.exports={
	midset,
	quicksort
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值