微软等数据结构+算法面试100题(12)--快速排序

/*
3.快速排序(东软喜欢考类似的算法填空题,又如堆排序的算法等)
*/
int Parition(int *p,int low,int high)
{
	int pivotkey=p[low];
	while(low<high)
	{
		while((low<high)&&(p[high]>=pivotkey))//这里相等不能丢掉
			high--;
		p[low]=p[high];
		while((low<high)&&(p[low]<=pivotkey))
			low++;
		p[high]=p[low];
	}
	p[low]=pivotkey;
	return low;
}

void QuickSort(int *p,int low,int high)
{
	if(low>=high)
		return;
	int pivot=Parition(p,low,high);
	QuickSort(p,low,pivot-1);
	QuickSort(p,pivot+1,high);
}
void QuickSortTest()
{
	int p[]={10,0,15,12,-10,-5,9,2,8,6,4,20,19,6,8,7};
	int len=sizeof(p)/sizeof(int);
	cout<<"the array : ";
	ShowArray(p,len);
	cout<<"after sort : ";
	QuickSort(p,0,len-1);
	ShowArray(p,len);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值