小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
引
说到快速排序,可能大家都不会陌生。今天的算法课程中,学到了快速排序的两种中间实现步骤,给大家分享一下。
1.快速排序的思想
首先还是过一遍快速排序的基本思想。
用我自己的话总结一下,就是:
- 在比较序列中取关键值key
- 将序列中比key值大的放在key的一侧,比key值小的放在另一则
- 分别对左右两侧重复进行1、2操作
从步骤中我们能够清晰地明白这是一种分而治之的思想,因此在代码中的体现就是使用递归。
2.对于步骤2的解析
作为算法的主要部分,我们需要知道如何实现步骤2,即将大的放在一边,小的放在另一边。
从字面上来看,这个步骤似乎实现起来并不难,但我们的算法依然有许多考究之处。
[图片来源](【算法】排序算法之快速排序 - 知乎 (zhihu.com))
2.1
左右分开找
1 | js复制代码int partition(int arr[], int low, int high){ |
具体思路参考下图
2.2
从一端“过滤”
1 | js复制代码 |
本文转载自: 掘金