C#快速排序

本文详细介绍了一种高效的排序算法——快速排序。通过选取支点并以此为基准将数组分为大小两个部分,递归地进行排序。文章提供了快速排序的具体实现代码,并解释了其工作原理。

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

 /// <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;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值