zoukankan      html  css  js  c++  java
  • [练手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];
            }

    代码下载  快速排序代码

  • 相关阅读:
    作业
    函数
    集合及特殊集合
    VS2010中安装AjaxControlToolkit
    连接SQLServer OLEDB数据库(ACCESS) ODBC Oracle
    设置热键 默认焦距 提交时弹出确认信息
    显示长日期格式时间
    FileUpLoad控件
    按钮类型控件 选择类型控件
    Textbox服务器控件
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/DO6.html
Copyright © 2011-2022 走看看