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