快速排序算法

系统 1890 0

快速排序算法是最快的排序算法,当然它是针对大量通常无序的集合而言是正确的。

public void QSort()

{

    RecQSort(0, numElements - 1);

}

public void RecQSort(int first, int last)

{

    if ((last - first) <= 0)

        return;

    else

    {

        int part = this.Partition(first, last);

        RecQSort(first, part - 1);

        RecQSort(part + 1, last);

    }

}

public int Partition(int first, int last)

{

    int pivotVal = arr[first];

    int theFirst = first;

    bool okSide;

    first++;

    do

    {

        okSide = true;

        while (okSide)

            if (arr[first] > pivotVal)

                okSide = false;

            else

            {

                first++;

                okSide = (first <= last);

            }

        okSide = true;

        while (okSide)

            if (arr[last] <= pivotVal)

                okSide = false;

            else

            {

                last--;

                okSide = (first <= last);

            }

        if (first < last)

        {

            Swap(first, last);

            this.DisplayElements();

            first++;

            last--;

        }

    } while (first <= last);

    Swap(theFirst, last);

    this.DisplayElements();

    return last;

}

public void Swap(int item1, int item2)

{

    int temp = arr[item1];

    arr[item1] = arr[item2];

    arr[item2] = temp;

}

如果数组内的的数据是随机的,那么选择第一个

最流行的选择中间值得方法。

theFirst = arr[(int)arr.GetUpperBound(0) / 2]

快速排序算法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论