2010年12月7日 星期二

My Blog: QuickSort C Code





C++ code colored by C++2HTML





void testQuickSort()
{

static int a[8]={4,7,8,5,2,6,3,1};

    quickSort(a,0,7);

for(int i=0;i<8;i++)

        printf("%d",a[i]);

}
static void quickSort (int a[], int lo, int hi)
{

//  lo is the lower index, hi is the upper index
//  of the region of array a that is to be sorted
    int i=lo, j=hi, h;

    int x=a[(lo+hi)/2];

    //  partition

    do
    {    
        while (a[i]<x) i++; 
        while (a[j]>x) j--;

        if (i<=j)
        {
            h=a[i]; a[i]=a[j]; a[j]=h;

            i++; j--;
        }
    } while (i<=j);

    //  recursion

    if (lo<j) quickSort(a, lo, j);

    if (i<hi) quickSort(a, i, hi);
}



沒有留言: