• [练手6]快速排序


    目      标      用C#实现快速排序

    思      想     此排序为不稳定排序法

                     在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos- 1)和R[pivotpos+1..high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字 pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无须参加后续的排序。

    实现
           

     public void Sort(int[] intArray)
            {
                int low = 0;
                int high = intArray.Length - 1;
                Sort(intArray, low, high);
            }

            private void Sort(int[] intArray, int low, int high)
            {
                int intPivot;
                if (low < high)
                {
                    intPivot = SortOnce(intArray, low, high);
                    Sort(intArray, low, intPivot - 1);
                    Sort(intArray, intPivot + 1, high);
                }
            }

            private int SortOnce(int[] intArray, int low, int high)
            {
                int intPivot = intArray[low];

                while (low < high)
                {
                    while (high > low && intArray[high] >= intPivot)
                    {
                        --high;
                    }
                    //比中心轴记录小的移到左边
                    swap(ref intArray, low, high);
                    while (high > low && intArray[low] <= intPivot)
                    {
                        ++low;
                    }
                    //比中心轴记录小的移到右边
                    swap(ref intArray, low, high);
                }
                intArray[low] = intPivot;

                return low;//返回中心轴记录位置
            }

            private void swap(ref int[] intArray, int low, int high)
            {
                int intTemp = intArray[low];
                intArray[low] = intArray[high];
                intArray[high] = intArray[low];
            }

    代码下载  快速排序代码

  • 相关阅读:
    ActiveMQ, Qpid, HornetQ and RabbitMQ in Comparison
    AMQP与QPID简介
    设置JVM内存溢出时快照转存HeapDump到文件
    How to find configuration file MySQL uses?
    linux命令行模式下实现代理上网
    CAS分析——Core
    单点登录加验证码例子
    统一建模语言(UML) 版本 2.0
    UML 2中结构图的介绍
    如何更改 RSA 的语言设置
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/DO6.html
Copyright © 2020-2023  润新知