快速排序算法
介绍 快速排序是对冒泡排序的一种改进。 思想:将排序的数据分为两部分,一部分数据所有数据小于另一部分所有数据,然后在分别进行快速排序,排序过程可递归,从而得到有序序列。 它使用分治法(Divide and conquer)策略,把一个串行分为两个子串行。 步骤 1. 从数列中选一个元素,作为“基准”(pivot); 2. 重新排序数列,比基准小的值在左边(left),大的值在右边(right),等值随意;得到两个子数列:left、right; 3. left子数列重复1和2;right子数列重复1和2;递归。 代码 /// <summary> /// 一次排序单元,左边小,右边大 /// </summary> /// <param name="array">排序数组</param> /// <param name="left">排序起始位置</param> /// <param name="right">排序结束位置</param> /// <returns></returns> private static int SortUnit(int[] array, int left, int right) { int pivot = array[left]; while (left < right) { // 从后向前搜索比 pivot 小的值 while (array[right]