快速排序是生产环境中经常被用到的排序算法。快速排序算法也是一种运用分而治之思想的算法。
在分的过程中有两种不同的实现思想,分别如下图所示:
最近又看到一种实现: 填坑法。该方法比较简单,也比较容易理解。基本思想如下:
- 将第一个数记下作为key,同时挖出第一个坑
- 然后从后向前找第一个小于等于key的数,然后将该数填充的之前的坑中,同时又挖出了另一个坑
- 然后从前向后找第一个大于key的数,然后将该数填充到之前的坑中,此时又挖了一个坑
- 一直循环过程2和3,直到相遇。最后将之前的key填到最后的坑中。
这样保证了相遇位置之前的所有数都小于等于关键字,之后的数都大于关键字。