快速排序的递归非递归
快速排序: 即一趟快速排序的过程,返回基准。基准:平分数据段 时间复杂度:好情况(无序的数据):O(nlog2n) 坏(有序):O(n2) 空间复杂度:O(log2n) 算法稳定性:不稳定 原理:采用分治思想,在待排序的序列中选取一个值作为一个基准值,按照这个基准值得大小将这个序列划分成两个子序列,基准值会在这两个子序列的中间,一边是比基准小的,另一边就是比基准大的。这样快速排序第一次排完,我们选取的这个基准值就会出现在它该出现的位置上。这就是快速排序的单趟算法,也就是完成了一次快速排序。然后再对这两个子序列按照同样的方法进行排序,直到只剩下一个元素或者没有元素的时候就停止,这时候所有的元素都出现在了该出现的位置上。 例:一趟排序(以6为基准) 0 1 2 3 4 5 arr[]: 6 2 7 3 8 9 low=0 high=5 tmp=6 6 2 7 3 8 9 low=0 high=3 tmp=6 arr[high]=3 < tmp=6 3 2 7 6 8 9 low=0 high=3 tmp=6 arr[low]=arr[high]3 3 2 7 6 8 9 low=2 high=3 tmp=6 arr[low]=7 > tmp=6 3 2 6 7 8 9 low=2 high=3 tmp=6 arr[high]=arr[low]7 6的位置已确定 //递归 int