快速排序是一种比归并排序还要快的排序算法,具体原理如下图所示
对上图所示的数组,首先随机选取一个参照元素,一般选取最左边的元素4为参照元素,然后将数组排序成以4为分界点,左边都是小于4的元素,右边都是大于4的元素,按照这种方式进行不断递归,就可实现整个数组的排序。
上图显示的是程序的实现过程,首先指定最左边的元素 v v v 为参照元素,索引为 l l l,小于元素 v v v的 最后一个元素的索引为 j j j,正在处理的元素在大于元素 v v v 的元素的后面,索引为 i i i,如果 a r r [ i ] > v arr[i] > v arr[i]>v ,此时就将元素 i i i 合并到左边的元素中, i + + i++ i++,如果此时 a r r [ i ] < v arr[i] < v arr[i]<v ,那么就将 i i i 位置的元素与 j + 1 j+1 j+1 位置的元素交换,交换后 j + + j++ j++,此时 j j j 位置的元素就是小于 v v v 的,原来 j j j 位置的大于 v v v 元素交换到 i i i 位置了, i + + i++ i++,以此类推,