参照《算法导论》
#include<iostream>
using namespace std;
void swap(int &i,int &j){
int tmp = i;
i = j;
j = tmp;
return;
}
int patition(int*a, int l,int r)
{
int pivort = a[r]; //比较元素
int i = l-1;
for(int j=l;j<r;j++){
if(a[j]<=pivort){
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)
return;
int i = patition(a,l,r);
qsort(a,l,i-1);
qsort(a,i+1,r);
}
int main()
{
int array[] = {2,8,1,3,5,6,4};
int len = sizeof(array)/sizeof(array[0]);
qsort(array,0,len-1);
for(int i = 0;i<len;i++){
cout << array[i] << ", ";
}
cout<<endl;
return 0;
}