快速排序算法总结

快速排序(Quick Sort)使用分治法策略。
它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序流程:
(1) 从数列中挑出一个基准值。
(2) 将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(相同的数可以到任一边);在这个分区退出之后,该基准就处于数列的中间位置。
(3) 递归地把"基准值前面的子数列"和"基准值后面的子数列"进行排序。

算法核心代码如下:

 1 public static void QuickSort(List<int> list)
 2 {
 3     if(listt.Count < 2) return;//如果数组的元素少于两个直接返回
 4     //创建三个数组对象
 5     List<int> smaller = new List<int>();
 6     List<int> same = new List<int>();
 7     List<int> larger = new List<int>();
 8 
 9     int pivot = list[0];
10 
11    foreach(var item in list)//挨个遍历为数组添加元素
12    {
13      if(item < pivot)
14      smaller.Add(item);
15      else if(item > pivot)
16      larger.Add(item);
17      else
18      same.Add(item);
19    }
20 
21    QuickSort(smaller);//递归思想
22    QuickSort(larger);
23 
24    List.Clear();//清空数组
25    List.AddRange(smaller);
26    List.AddRange(same);
27    List.AddRange(larger)
28 }

 

上一篇:Codeforces Round #556 (Div. 2)


下一篇:Codeforces Round #556 Div. 1