本文主要关于演示C语言中的快排算法。
大名鼎鼎的QuickSort–快速排序算法,如此的高效、快速而优雅,今天让我们用图片和文字形象地展示一下它吧!
快排是一种分治算法,其主要思想在于通过选取一个基准Pivot将序列分为左右两个子序列,其中左序列的数都小于等于Pivot,右边的都大于等于Pivot,再在这两个子序列上递归调用快排算法即可。
而理解快排算法的核心就在于分解这个步骤,这里我们先给出代码,再用图片展示步骤。
1 | // |
以下是Python版本:
1 |
|
- 为了排序整个序列,只需要调用QuickSort(R,0,n-1)即可完成对R[0..n-1]的排序。
- 这里选取了第一个元素作为基准,如果输入是随机序列,那么没什么大碍,但是如果输入是预排序或者逆序的,那么会产生坏的排序,使得时间复杂度提高,随机选取基准是一种可行的方法,另外一种是选取开头、中间点和末位点的中位数。
![image](/images/2016/12/QuickSort/QuickSort.001.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.002.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.003.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.004.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.005.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.006.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.007.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.008.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.009.jpeg)
![image](/images/2016/12/QuickSort/QuickSort.010.jpeg)