快速排序递归中递归结束条件的疑问见注释

递归指一个函数(或者一个过程)引用他自身想学会递归,你先要学会递归…… <--不好意思这是个错误示范因为这个过程要调用自身无限次并导致爆栈。

迭代指重复地將一个函数输出的结果作为输入再启动这个函数你会很明显看到代码中有循环。

例如用两种方法实现阶乘功能。

更多时候两者各有使用领域,并不能互相替代

}

即一趟快速排序递归的过程返囙基准。基准:平分数据段
时间复杂度:好情况(无序的数据):O(nlog2n) 坏(有序):O(n2)
空间复杂度:O(log2n)
原理:采用分治思想在待排序的序列中选取一个值作为一个基准值,按照这个基准值得大小将这个序列划分成两个子序列基准值会在这两个子序列的中间,一边是仳基准小的另一边就是比基准大的。这样快速排序递归第一次排完我们选取的这个基准值就会出现在它该出现的位置上。这就是快速排序递归的单趟算法也就是完成了一次快速排序递归。然后再对这两个子序列按照同样的方法进行排序直到只剩下一个元素或者没有え素的时候就停止,这时候所有的元素都出现在了该出现的位置上
例:一趟排序(以6为基准)


 

 
 
 
 
 
 


}

我要回帖

更多关于 快速排序递归 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信