标签:eric cti ace 最大的 length flag view box generic
依次比较相邻的两个数,将小数放在前面,大数放在后面。
第1趟:
首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。
第2趟:
仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。
如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

public class Sort
{
    public class Quick_Sort
    {
        private static int QuickSort_Once(int[] _pnArray, int _pnLow, int _pnHigh)
        {
            int nPivot = _pnArray[_pnLow];      //将首元素作为枢轴
            int i = _pnLow, j = _pnHigh;
            while (i < j)
            { 
                //从右到左,寻找首个小于nPivot的元素
                while (_pnArray[j] >= nPivot && i<j) j--;
                //执行到此,j已指向从右端起首个小于nPivot的元素
                //执行替换
                _pnArray[i] = _pnArray[j];
                //从左到右,寻找首个大于nPivot的元素
                while (_pnArray[i] <= nPivot && i<j) i++;
                //执行到此,i已指向从左端起首个大于nPivot的元素
                //执行替换
                _pnArray[j] = _pnArray[i];
            }
            //推出while循环,执行至此,必定是i=j的情况
            //i(或j)指向的即是枢轴的位置,定位该趟排序的枢轴并将该位置返回
            _pnArray[i] = nPivot;
            return i;
        }
        private static void QuickSort(int[] _pnArray, int _pnLow, int _pnHigh)
        {
            if (_pnLow >= _pnHigh) return;
            int _nPivotIndex = QuickSort_Once(_pnArray, _pnLow, _pnHigh);
            //对枢轴的左端进行排序
            QuickSort(_pnArray, _pnLow, _nPivotIndex-1);
            //对枢轴的右端进行排序
            QuickSort(_pnArray, _nPivotIndex + 1,_pnHigh);
        }
        public static void Main()
        {
            Console.WriteLine("请输入待排序数列(以\",\"分割):");
            string _s = Console.ReadLine();
            string[] _sArray = _s.Split(",".ToCharArray());
            int _nLength = _sArray.Length;
            int[] _nArray = new int[_nLength];
            for (int i = 0; i < _nLength; i++)
            {
                _nArray[i] = Convert.ToInt32(_sArray[i]);
            }
            QuickSort(_nArray, 0, _nLength-1);
            Console.WriteLine("排序后的数列为:");
            foreach (int _n in _nArray)
            {
                Console.WriteLine(_n.ToString());
            }
        }
    }
}
标签:eric cti ace 最大的 length flag view box generic
原文地址:https://www.cnblogs.com/zyy1688/p/10002404.html