快速排序算法的实现

Posted Learn++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序算法的实现相关的知识,希望对你有一定的参考价值。

void swap_int1(int &i1, int &i2)
{
    i1 = i1 + i2;
    i2 = i1 - i2;
    i1 = i1 - i2;
}

int partion(int *ptrA, int lenA, int beg, int end)
{
    int index = rand()%(end-beg)+beg;
    swap_int1(ptrA[end], ptrA[index]);
    int smallPos = beg - 1;
    int i = beg;
    for(; i<end; ++i)
    {
        if(ptrA[i] < ptrA[end])
        {
            ++smallPos;
            if(i != smallPos)
                swap_int1(ptrA[i], ptrA[smallPos]);
        }
    }
    ++smallPos;
    swap_int1(ptrA[smallPos], ptrA[end]);
    return smallPos;
}


void QuickSort(int *ptrA, int lenA, int beg, int end)
{
    if(beg < end)
    {
        int index = partion(ptrA, lenA, beg, end);
        if(index >beg)
            QuickSort(ptrA, lenA, beg, index-1);
        if(index < end)
            QuickSort(ptrA, lenA, index+1, end);
    }
}

 

排序算法就像是数字信号里边的傅里叶变换一样基础,在此继续温习一遍。

以上是关于快速排序算法的实现的主要内容,如果未能解决你的问题,请参考以下文章

交换排序(冒泡排序快速排序的算法思想及代码实现)

快速排序算法详解及代码实现

快速排序Java代码简洁实现

排序算法——快速排序的图解代码实现以及时间复杂度分析

四种排序算法实现

快速排序/快速选择算法