快速排序算法实现
快速排序算法主要有以下两种实现方式:
1. 普通快速排序:首先随机取一个标定点 v,将 v 放置到合适的位置,保证 v 左边的元素都小于等于 v,v 右边的元素都大于 v,然后再继续分别对左边元素和右边的元素做同样的排序动作,直到整个数组有序。
2. 双路快排:这种方式使用两个指针,分别从数组的左右两边向中间走,左边的指针为 i,右边的为 j,当 i 下标代表的值大于等于 v 时,和 j 下标代表的值小于等于 v 时,i 和 j 交换位置,直到 i 和 j 相遇。
需要注意的是,快速排序的核心逻辑在 partition 方法中,每次取数组的第一个元素为标定点 v,然后从 v 后面的第一元素开始遍历数组,如果当前元素小于等于 v,则交换当前元素和 j 位置的元素,并且 j++,如果当前元素大于 v,则直接遍历下一个元素就好。遍历完整个数据后,我们再将 v 和 j -1 位置的元素交换位置就可以了。
