1. 思路
快速排序基于这样一种想法:给定一个序列,排完之后,数据小的一定在左侧,数据大的一定在右侧。根据这一特性,随机的在序列中取一个数k,只需要把比这个数大的数据换到右侧,比这个数小的数据换到左侧,就完成了一次排序。然后以k为中心,将数组分成两部分,再分别对这两部分做如上操作,直到排完成个序列。这种策略很像老顽童的左右互搏术,或者乾坤大挪移之类的功法,说白了就是来回倒腾。
接下来我们简单描述一下排序过程
a. 对以下数组,取中间数6,我们需要两个索引i和j。其中i从左向右偏移,j从右向左偏移。初始化状态如下图

b. 先走j

快速排序算法通过选取基准值并不断交换元素,实现数组的分治排序。文章详细介绍了排序过程,包括双指针策略和优化方法如三值取中法。讨论了时间复杂度,最好情况下为O(NlogN),最坏情况下为O(N^2)。最后,对比了快速排序与归并排序的异同,并提出在小区间采用插入排序的优化技巧。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



