现在的位置: 首页 > 综合 > 正文

C#快速排序

2013年09月02日 ⁄ 综合 ⁄ 共 1171字 ⁄ 字号 评论关闭

快速排序主要是利用一个临时存储空间存储一个支点,以支点作为比较标准,大小两个序列分在支点的两边。然后递归两个序列。

 /// <summary>
        /// 快速排序
        /// </summary>
        /// <param name="Myarray">数组</param>
        /// <param name="low">低位</param>
        /// <param name="high">高位</param>
        /// <returns></returns>
        private int[] QuickSort(int[] Myarray, int low, int high)
        {
            int i = low;
            int j = high;
            int tmp = Myarray[low];
            while (low < high) 
            {

               //支点与高位的值比较
                while((low<high) && (Myarray[high]>=tmp))
                {
                    --high;
                }

               //在low小于high的条件下,替换低位的值
                if (low < high)
                {
                    Myarray[low] = Myarray[high];
                    low++;
                }
                while((low<high)&&(Myarray [low]<=tmp))
                {
                    ++low;
                }
                if (low < high)
                {
                    Myarray[high] = Myarray[low];
                    --high;
                }
            }
            Myarray[low] = tmp;
            if (i < low - 1)
                QuickSort(Myarray, i, low - 1);
            if(j>low+1)
                QuickSort (Myarray ,low+1,j);
            return Myarray;
        }

抱歉!评论已关闭.