快速排序

#include <limits>

void swap(int &ld, int &rd)
{
	int tmp;
	tmp = ld;
	ld = rd;
	rd = tmp;
}


int partition(int data[], int sdix, int edix)
{
	//int t;
	int medix;
	int refval = data[sdix];
	int lidx = sdix;
	int ridx = edix;
	while(lidx < ridx)
	{
		//printVec(data, 0, 9);


		while((data[lidx] <= refval) && (lidx <= edix))
		{
			lidx++;
		}
		//lidx = lidx -1;
		//cout << lidx << endl;
		while((data[ridx] > refval) && ( ridx >= sdix))
		{
			ridx--;
		}
		//cout << ridx << endl;
		if(lidx < ridx)
		{
			swap(data[lidx],data[ridx]);
		}	
		//reflidx = sdix;
		//refridx = edix;
		//cin>> t;
	}
	medix = ridx;
	swap(data[sdix],data[medix]);
	


	return medix;
}


void quicksort(int data[], int sdix, int edix)
{
	if(sdix == edix)
		return;


	int medix = 0;


	if(sdix < edix){
		//cout << " process index from " << sdix << " to " << edix << endl;
		medix = partition(data,sdix,edix);
		quicksort(data, sdix, (medix-1));
		quicksort(data, (medix+1), edix);
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值