#include <iostream>
using namespace std;
void exchange(int& a, int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int part(int* a,int p,int r)
{
int x = a[r];
int i = p-1;
for(int j=p;j<=r-1;j++)
{
if(a[j]<=x)
{
i=i+1;
exchange(a[i],a[j]);
}
}
exchange(a[i+1],a[r]);
return i+1;
}
void quicksort(int* a,int p, int r)
{
int q;
if(p<r)
{
q = part(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q,r);
}
}
void print(int* a,int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}
int main()
{
int a[10]={3,5,21,1,9,56,4,6,12,19};
quicksort(a,0,10);
print(a,10);
cout << "Hello world!" << endl;
return 0;
}
对照书上伪代码可以写出程序,注意的是,在partition中,p指的是起始元素索引,r是结束元素索引,在不同语言中实现要注意下标。