快速排序参考程序:
#include <iostream>
using namespace std;
int a[9]={30,24,5,58,18,36,12,42,39};
// 第一个元素作为基准元素
void qsort(int l,int r){
if(l>r)return;
int p=a[l];
int i=l,j=r;
while(i<j){
while(a[j]>p&&i<j)j--;
while(a[i]<=p&&i<j)i++;
if(i<j)swap(a[i],a[j]);
}
swap(a[l],a[i]);
// for(int i=0;i<=4;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
cout<<i<<" "<<j<<endl;
qsort(l,i-1);
qsort(i+1,r);
}
// 中间位置元素作为基准元素
void mqsort(int l,int r){
int i=l,j=r;
int p=a[(l+r)/2];
do{
while(a[i]<p)i++;
while(a[j]>p)j--;
if(i<=j){
swap(a[i],a[j]);
i++;
j--;
}
}while(i<=j);
if(l<j)mqsort(l,j);
if(i<r)mqsort(i,r);
}
int main(){
qsort(0,8);
for(int i=0;i<=8;i++){
cout<<a[i]<<" ";
}
return 0;
}