首页 > 编程语言 > 详细

c#快速排序

时间:2015-11-02 01:24:46      阅读:189      评论:0      收藏:0      [点我收藏+]

快速排序是先将大的值和小的值分成2组再进行比较整合输出最后排序结果;

  var arry = new int[] { 5, 45, 63, 8, 52, 99, 34 }; //建立数组
        QuickSort(arry, 0, arry.Length - 1);
        foreach (var t in arry)
        {
            Response.Write(t+"\n");       //输出排序后的结果
        }
    /// <summary>
    /// 快速排序算法
    /// </summary>
    /// <param name="data">排序数组</param>
    /// <param name="leftpos">下限</param>
    /// <param name="rightpos">上限</param>
    static void QuickSort(IList<int> data, int leftpos, int rightpos)
    {
        while (true)
        {
            var middle = data[(rightpos + leftpos) / 2]; //中间值
            var i = leftpos;       //移动上下标
            var j = rightpos;
            do        //循环知道分割为2个序列
            {
                while (data[i] < middle && i < rightpos)   //扫描中值左边的序列
                    i++;
                while (data[j] > middle && j > leftpos)   //扫描中值右边的序列
                    j--;
                if (i > j) continue;   
                var temp = data[i];       //知道可交互的值交换数据
                data[i] = data[j];
                data[j] = temp;
                i++;
                j--;
            } while (i <= j);
            {
                if (j > leftpos)  //递归对比分割点元素都小的那个序列进行快速排序
                    QuickSort(data, leftpos, j);
                if (i < rightpos)
                {              //递归对比分割点元素都大的那个歌序列进行快速排序
                    QuickSort(data,i,rightpos);
                }
            }

            break;
        }
    }

 

c#快速排序

原文:http://www.cnblogs.com/professional-NET/p/4929049.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!