码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论 学习二 分治之递归实现快速排序

时间:2015-05-08 17:54:28      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

        /// <summary>
        /// 快速排序
        /// </summary>
        /// <param name="array">需要排序的数组</param>
        /// <param name="Max">当前排序序列的最大索引</param>
        /// <param name="Min">当前排序序列的最小索引</param>
        static void QuickSort(int[] array,int Max,int Min)
        {
            if (Max - Min<=1) //序列中元素个数小于等于2时 退出递归
            {
                if (Max - Min == 1)
                {
                    if (array[Max] < array[Min])
                    {
                        int temp = array[Max];
                        array[Max] = array[Min];
                        array[Min] = temp;
                    }
                }
                return;
            }
            int tempMax = Max;
            int tempMin = Min+1;
            int index = Min;
            while (tempMin <= tempMax) //去序列的第一个数作为标准 将当前序列 分为两部分 比标准小的放在标准前面 比标准大的放到标准后面 
            {
                if (array[index] >=array[tempMin] )
                {
                    int temp = array[index];
                    array[index] = array[tempMin];
                    array[tempMin] = temp;
                    index++;
                    tempMin++;
                    continue;
                }

                int num = array[tempMax];
                array[tempMax] = array[tempMin];
                array[tempMin] = num;
                tempMax--;
                continue;
            }
            int n=index;
            if (index == Max)//如果标准在序列中为最大值 处理标准所在的下标
                n = index - 1;
            QuickSort(array, Max, tempMin); //标准分成的两部分再次划分 缩小排序规模
            QuickSort(array, index, Min);
                
        }

  快速排序

        /// <summary>
        /// 冒泡排序
        /// </summary>
        /// <param name="array">需要排序的数组</param>
        static void BubbleSort(int[] array)
        {
            for (int i = 1; i < array.Length; i++)
            {
                for (int j = array.Length - i; j < array.Length-1; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        int temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;


                    }
                }
            }
        }

  冒泡排序

算法导论 学习二 分治之递归实现快速排序

标签:

原文地址:http://www.cnblogs.com/NEAVERS/p/4488359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!