快速排序实现

#include<iostream>
using namespace std;
void inline SWAP(int &a,int &b)
{
     int temp = a;
     a = b;
     b = temp;
}
int paitition(int *a,int p,int r)
{
    int i = p-1;
    int x = a[r-1];
    for(int j = p; j < r-1; ++j)
    {
        if(a[j] <= x)
        {
            ++i;
            SWAP(a[i],a[j]);
        }
    }
    SWAP(a[++i],a[r-1]);
    return i;
}
void quick_sort(int *a,int p,int r)
{
    int q = 0;
    if(p < r-1)
    {
        q = paitition(a,p,r);
        quick_sort(a,p,q-1);
        quick_sort(a,q+1,r);
    }
}
int main()
{
    int a[] = {2,8,7,1,3,5,6,4};
    int size = sizeof(a)/sizeof(*a);
    quick_sort(a,0,size);
    for(int i = 0; i < size; ++i)
        cout << a[i]<< " ";

}

终于搞定了,原来是在partition这个函数时写错了!

posted @ 2010-11-06 22:25  hailong  阅读(107)  评论(0编辑  收藏  举报