分治法(三)——快速排序(c++)

本文介绍了快速排序的基本思想和实现过程,通过C++代码展示了快速排序算法的详细步骤,并进行了测试验证其正确性。
摘要由CSDN通过智能技术生成

快速排序

基本思想:

将首元素x作为划分标准,将输入数组A划分为不超过x的元素构成数组A1,将大于x的元素构成的数组作为A2,从左到右存放在数组A的位置。

递归的对子问题A1,A2进行排序,知道子问题规模为1时停止。

过程:

代码:

int swap(vector<int> &a,int begin,int end,int x){
	int i=begin+1;
	int j= end;
	while(true){
		while(a[i]<x) i++;
		while(a[j]>x) j--;
		if(i<j){
			int temp = a[i];
			a[i] = a[j];
			a[j] = temp;
		}else {
			return j;
		}	
	}
}


int QuickSort(vector<int> &a,int begin,int end){
	if(begin<end){
		int x = a[begin];//x为首元素 
		int partition = swap(a,begin,end,x);
		a[begin] = a[partition];
		a[partition] = x;
		QuickSort(a,begin,partition-1);
		QuickSort(a,partition+1,end); 
	}	
	return 0;
	
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值