Quicksort

Quicksort
不要说我水...
导论伪代码实现,晚上时间不多了,抽空再多写写.
code:

#include<iostream>
#include<algorithm>
#define REP(i,from,to) for(int i=(from);i<=(to); ++i)
using  namespace std;
int a[]={9,8,0,7,6,5,4,3,2,1};
int partition( int *a, int p, int r);
void quicksort( int *a, int p, int r){
     if(p<r){
         int q = partition(a,p,r);
        quicksort(a,p,q-1);
        quicksort(a,q,r);
    }
}
int partition( int *a, int p, int r){
     int x = a[r];
     int i=p-1,j;
    REP(j,p,r-1){
         if(a[j]<=x){
            i++;
            swap(a[i],a[j]);
        }
    }
    swap(a[i+1],a[r]);
     return i+1;
}
int main(){
    quicksort(a,0,9);
    REP(i,0,9)
        cout<<a[i]<<' ';
    cout<<endl;
     return 0;
}

你可能感兴趣的:(Quicksort)