快速排序
基本思想
通过一趟排序将待排数列分割二部分,一部分比关键字小,一部分大。继续排序这个两个部分。
代码
#include <iostream>
using namespace std;
const int LN=10000;
int a[LN];
void qsort(int a[],int aa,int ab);
int main(){
int n;
cin>>n;
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]<<" ";
return 0;
}
void qsort(int a[],int aa,int ab){
int mid=a[(aa+ab)/2];
int i,j;
for(i=aa,j=ab;i<=j;){
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j){
int temp=a[i];a[i]=a[j];a[j]=temp;
i++;j--;
}
}
if(aa<j) qsort(a,aa,j);
if(i<ab) qsort(a,i,ab);
}