//一个便于理解但不是最优的快速排序算法c++实现。
include <iostream>
using namespace std;
int tswap(int &a,int &b) //交换两个数
{
int s;
s=a;
a=b;
b=s;
return 0;
}
int qsort(int a[],int first,int tail)
{
int flag=first;
int f=first;
int t=tail;
if(first>=tail)
{
return 0;
}
else
{
while(first<tail)
{
while(a[first]<a[flag]&&first<tail)//从左到右找到比key大的数
{
first++;
}
while(a[tail]>=a[flag]&&first<tail)//从右到左找到比key小的数
{
tail--;
}
tswap(a[first],a[tail]);//交换两数
}
tswap(a[flag],a[first]);//将key和较小数交换
}
qsort(a,f,first-1);
qsort(a,first+1,t);
return 0;
}
int main()
{
int a[]= {5,3,1,5,4,8};
qsort(a,0,5);
for(int i=0; i<6; i++)
{
cout<<a[i]<<endl;
}
return 0;
}