經典算法002--快速排序

Posted 狂想NICE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了經典算法002--快速排序相关的知识,希望对你有一定的参考价值。

快速排序的基本概念:

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

一組數值,使用快速排序(Quicksort),從小到大排序。

 class Program
    {
        static void Main(string[] args)
        {
            int[] arrayInts = new int[] {99, 6, 7, 2, 14, 8, 2};
            Quick_by(ref arrayInts,0,arrayInts.Length);
        }

        public static void Quick_by(ref int[] array,int left,int right)
        {
            if (left < right)
            {
                int i = left;
                int j = right - 1;
                int middle = array[(left + right)/2];
                while (true)
                {
                    while (i < right && array[i] < middle)
                    {
                        i++;
                    }
                    while (j > 0 && array[j] > middle)
                    {
                        j--;
                    }
                    if (i == j) break;
                    array[i] = array[i] + array[j];
                    array[j] = array[i] - array[j];
                    array[i] = array[i] - array[j];
                    if (array[i] == array[j]) j--;
                }
                Quick_by(ref array,left,i);
                Quick_by(ref array,i+1,right);
            }
        }
}

 

以上是关于經典算法002--快速排序的主要内容,如果未能解决你的问题,请参考以下文章

快速排序-递归实现

算法排序之堆排序

一行Python代码搞定快速排序算法

排序算法 | 快速排序(含C++/Python代码实现)

交换排序(冒泡排序快速排序的算法思想及代码实现)

快速排序/快速选择算法