快速排序
**快速排序(Quick Sort)又称为划分交换排序(partition-exchange sort)**是一种有效率的排序算法。
平均时间复杂度:
最好时间复杂度:
最坏时间复杂度:
空间复杂度:根据实现方式不同为 或
稳定性:不稳定
排序方式:原地(In-place)
步骤:
从序列中挑出一个元素作为基准(Pivot),一般选取序列中的第一个;
从后向前遍历剩余元素,找到第一个比基准小的元素的索引;
从前向后遍历剩余元素,找到第一个比基准数大的元素的索引;
交换两个元素;
重复 2~4,直到从后向前的游标和从前向后的游标重叠;
交换基准与当前两个游标重叠的位置的元素,此时,所有比基准值小的元素放在基准前面,所有比基准大的放在基准后面(相同的可放在前面或后面);
划分结束后,以基准所在位置划分左右两个分区;
对新划分的分区执行 1~5,直到无法划分分区。
可以简单理解为,从每个的分区中,取一个基准值,然后找到这个基准值所在的位置。

递归实现:
非递归实现:
最后更新于