快速排序算法

//实现快速排序算法
#include<iostream>
using namespace std;
void quicksort(int *a,int left,int right)
{
	int f,t;
	int ltemp,rtemp;
	ltemp=left;
	rtemp=right;//左右指针开始分别在左右两端 
	f=a[(left+right)/2];//取中间元素为分界值 
	while(ltemp<rtemp)
	{
		while(a[ltemp]<f)
		{
			++ltemp;
		}//如果左侧元素比分界值小就不改变位置
		while(a[rtemp]>f)
		{
			--rtemp;
		}//如果右侧元素比分界值大就不改变位置
		if(ltemp<=rtemp)//此时已经找到左边比分界值大的和右边比分界值小的值,把它们交换 
		{
			t=a[ltemp];
			a[ltemp]=a[rtemp];
			a[rtemp]=t;
			++ltemp;
			--rtemp;
		}
	}//该循环结束时已经将排序的数据分成两部分 
	if(ltemp==rtemp)
	{
		++ltemp;
	}
	//对接下来的两部分分别进行相同的排序(递归调用) 
	if(left<rtemp)
	{
		quicksort(a,left,ltemp-1);
	}
	if(right>ltemp)
	{
		quicksort(a,rtemp+1,right);
	}
}
int main()
{
	int a[10];
	cout<<"请输入十个整数:";
	for(int i=0;i<10;i++)
	{
		cin>>a[i];
	}
	cout<<"排序后为:"<<endl;
	quicksort(a,0,9);
	for(int i=0;i<10;i++)
		{
			if(i!=9)
			{
				cout<<a[i]<<" ";
			}
			else
			{
				cout<<a[i];
			}
		}
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值