快速排序法(Quick sort)运用到 Divide and conquer 的概念,

把数列一分为二,最终完成排序。

 

步骤为:

1.  取第一个元素(最左的数)为键值 key

 

2.  由左向右(前向后)找一个数(第一个满足的),

其值大于等于 key 值,该数之索引为 left_pivot

 

3.  由右向左(后向前)找一个数(第一个满足的),

其值小于等于 key 值,该数之索引为 right_pivot

 

4.  如果 left_pivot < right_pivot 则交换值,

否则把 key 值与 right_pivot 值交换,以 right_pivot 为基准,分为左右两个数列

 

5. 重复上述步骤排序左右两个数列,直到完成排序

 

如下图

quick.png

以下为Python的快速排序法(由小到大)程式码

(使用了额外空间)

 

 

 

In-place的版本

 


参考wikipedia,https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

快速排序可以参考wikipedia上的python超简短的实作程式码唷 =)

相关文章