C#快速排序法字符串数组

C#快速排序法字符串数组

class Quicksort {
    private void quickSwap(string[] Array, int Left, int Right) 
    {
        string Temp = Array[Right];
        Array[Right] = Array[Left];
        Array[Left] = Temp;
    }

    public void quickSort(string[] Array, int Left, int Right) 
    {
        int LHold = Left;
        int RHold = Right;
        Random ObjRan = new Random();
        int Pivot = ObjRan.Next(Left, Right);
        quickSwap(Array, Pivot, Left);
        Pivot = Left;
        Left++;

        while (Right >= Left) 
        {
            int cmpLeftVal = Array[Left].CompareTo(Array[Pivot]);
            int cmpRightVal = Array[Right].CompareTo(Array[Pivot]);

            if ((cmpLeftVal >= 0) && (cmpRightVal < 0))
            {
                quickSwap(Array, Left, Right);
            }
            else 
            {
                if (cmpLeftVal >= 0)
                {
                    Right--;
                }
                else 
                {
                    if (cmpRightVal < 0)
                    {
                        Left++;
                    }
                    else 
                    {
                        Right--;
                        Left++;
                    }
                }
            }
        }       
        quickSwap(Array, Pivot, Right);
        Pivot = Right;  
        if (Pivot > LHold)
        {
            quickSort(Array, LHold, Pivot);
        }
        if (RHold > Pivot + 1)
        {
            quickSort(Array, Pivot + 1, RHold);
        }
    }
}

快速排序简介:

快速排序(Quicksort)是对冒泡排序的一种改进。

由C. A. R. Hoare在1962年提出。

它的基本思想是:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

本文摘自深度开源:https://www.open-open.com/code/view/1456621672156,侵删。


欢迎分享,(木庄网络博客交流QQ群:562366239

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论