快速排序算法

快速排序算法是冒泡排序算法的升级版,他的效率是极高的,基本思想使用了分治策略,通过一趟排序将数组分成两个小数组,其中一部分比另一部分的数据小,然后递归的对子序列进行排序,直到完成整个数据的排列。

基本步骤是:

将数组中的一个作为轴(一般选择第一个)然后从数组的最后一个开始和这个轴进行比较,如果比轴大,就放在原处不动,进行下个数据的比较,直到找到一个比轴小的数,然后进行替换;接下来从第一个数开始和这个轴进行比较,如果比轴小,就放在原处,进行下个数据的比较,直到找到一个比轴大的数,然后进行替换;

举个例子: 8,9,1,4,2,9,3

轴为:8

i:0

j:6

第一次比较:3<8   替换 3,9,1,4,2,9,8   i:0    j:6

第二次比较:3<8   i:1    j:6    9>8  替换 3,8,1,4,2,9,9

第三次比较:9>8   i:1    j:5    9>8   i:1  j:4   2<8   替换 3,2,1,4,8,9,9

第四个比较:2<8   i:2    j:4    1<8   i:3  j:4   4<8   i:4  j:4   第一趟结束  分成两组,继续递归

#include <iostream>
using namespace std;

void _quick_sort(int *a,int left,int right)
{
	if(left<right)
	{
		int key=a[left];
		int low=left;
		int high=right;
		while(low<high)
		{
			while(low<high && a[high]>key)
				high--;
			swap(a[low],a[high]);
			while(low<high && a[low]<key)
				low++;
			swap(a[low],a[high]);
		}
		_quick_sort(a,left,low-1);
		_quick_sort(a,low+1,right);
	}
	
}
void swap(int &a, int &b)
{
	int temp=0;
	temp=a;
	a=b;
	b=temp;
}
void main()
{
	int ia[]={8,9,1,4,2,6,3};
	_quick_sort(ia,0,6);
	for(int i=0;i<7;i++)
	{
		cout<<ia[i]<<endl;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值