算法導論上面說在選取基准元素是取得最後一個,我用的數據結構課本上面是取第一個;
不過沒有原理都是一樣的;通過Qartion(int a[],int l,int r)函數將數組a中元素劃分為三部分,比a[r]小的,比a[r]大的,a[r];www.2cto.com
最後返回基准元素所在的位置;
[cpp]
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
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<r)
{
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<n;i++)
{
cin>>a[i];
}
Qsort(a,0,n-1);
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
作者:Java_beginer1