快速排序是一种交换排序,交换就是根据序列中的两个记录键值的比较结果来兑换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
hoare版本
我们选择最左边的作为一个Key值,left和right分别记录的是数组的下标,我们让右边的先往左走,到遇到一个比a[key]的值的时候停止
接下来我们让左边的再走,当遇到一个比a[key]大的值的时候停止
此时此刻我们将左右的两个值进行交换,然后继续走右边的right,遇到一个比a[key]的值