根据算法导论写的快速排序

2014-11-24 11:24:02 · 作者: · 浏览: 0
算法导论上面说在选取基准元素是取得最后一个,我用的数据结构课本上面是取第一个;
不过没有原理都是一样的;通过Qartion(int a[],int l,int r)函数将数组a中元素划分为三部分,比a[r]小的,比a[r]大的,a[r];www.2cto.com
最后返回基准元素所在的位置;
[cpp]
#include
#include
#include
#include
#include
using namespace std;
const int N=99;
int Qartion(int a[],int l,int r)
{
int tmp=a[r];
int i=l-1;
for(int j=l;j<=r-1;j++)
{
if(a[j]<=tmp)
{
i++;
swap(a[i],a[j]);
}
}
swap(a[i+1],a[r]);
return i+1;
}
void Qsort(int a[],int l,int r)
{
if(l {
int p=Qartion(a,l,r);
Qsort(a,l,p-1);
Qsort(a,p+1,r);
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int a[100];
for(int i=0;i {
cin>>a[i];
}
Qsort(a,0,n-1);
for(int i=0;i {
cout< }
cout< }
return 0;
}
作者: Java_beginer1