快排(一)

/*****************快排*******************/
int Partition(int *a, int ileft, int iright)
{
    int x = a[iright]; //主元
    int i = ileft - 1; //小于主元游标

    for(int j = ileft; j < iright; j++)
    {
        if(a[j] <= x) //小于主元
        {
            i++;
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }

    a[iright] = a[i+1];
    a[i+1] = x;

    return i+1;
}

void QuickSort(int *a, int ileft, int iRight) //快排接口
{
    if(ileft < iRight)
    {
        int ipos = Partition(a, ileft, iRight);
        QuickSort(a, ileft, ipos - 1);
        QuickSort(a, ipos + 1, iRight);
    }
}

posted @ 2013-07-15 20:02  xly0713  阅读(144)  评论(0编辑  收藏  举报