快速排序

12 篇文章 0 订阅
6 篇文章 0 订阅
#include<iostream>
#define type int 
void quick_sort(type* arry,int begin,int end);
void main(){
	type arry[]={8,2,3,4,2,4,8,9,0,1};
	quick_sort(arry,0,9);
	int i = 9;
	while(i >= 0){
		std::cout<<arry[9-i]<<std::endl;
	    i--;
	}
}
void quick_sort(type* arry,int begin,int end){
	int i,//记录比较值的开始位置
		j,//记录比较值的结束位置
		curposition;//记录中间值当前位置
	bool direction = false;//定义向右为正即i<curposition<j为正
    type temp = *(arry+begin);//记录中间值的值
	i = begin+1;
	curposition = begin;
	j = end;
	while (i<=j)
	{
		if(direction){//为正时curposition与i比较
			if(*(arry+i)<temp){
                  *(arry+curposition) = *(arry+i);
				  curposition = i;
				  direction = false;
			}
			i++;
		}
		else{//为负时curposition与j比较
			if(*(arry+j)>temp){
                  *(arry+curposition) =  *(arry+j);
				  curposition = j;
				  direction  = true;
			}
			j--;
		}
	}

	*(arry+curposition) = temp;//放回到适当位置此轮排序结束

	if (curposition - begin > 1)//进行下一轮较小值的排序
	{
		quick_sort(arry,begin,curposition - 1);
	}
	if (end - curposition > 1)//进行下一轮较大值的排序
	{
		quick_sort(arry,curposition + 1,end);
	}
	
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值