快速排序笔记

声明:“填坑法”的思想转自菜鸟教程。最后所给代码与菜鸟教程原代码并不完全一致。
快排的思想是:
选择序列一个基数,把当前序列分成两部分,一部分小于基数,一部分大于基数。等于基数的数可以放在任意一部分。 然后递归地用快排进行排序,递归边界是数组长度为1。
这是思想,但是实现可以不那么死板,用“填坑法”会比较好理解:
定义双指针分别指向两端
选择右指针的数作为基数(同时相当于最右边挖了一个坑)
从左指针向右找小于基数的,填到右指针坑里(但这时左指针的位置也出现了一个新坑)
再从右指针向左找大于基数的,填到左指针坑里(这时右指针的位置变成了坑)
不断重复3 4步,直到左指针等于右指针
最后左指针(右指针)的位置有一个坑,把基数填到这个坑里
递归调用快排