快速排序基本特性
时间复杂度:O(n*lgn)
最坏:O(n^2)
空间复杂度:最好情况下:O(lgn),最坏情况:O(n),平均情况:O(lgn)
不稳定。
关于快速排序的空间复杂度,谢谢@命运他爹 同学指正。详述一下。
快速排序由于每次递归的时候会占用一个空间返回中间数位置,所以一次递归的空间复杂度为O(1)。
最好情况和最坏情况下的递归深度为O(lgn),相应的空间复杂度就是O(lgn)
最坏情况下的递归深度为O(n),空间复杂度为O(n)。
算法
QUICKSORT(A, p, r) if p < r then q ← PARTITION(A, p, r) //关键 QUICKSORT(A, p, q - 1) QUICKSORT(A, q + 1, r) PARTITION(A, p, r) x ← A[r] i ← p - 1 for j ← p to r - 1 do if A[j] ≤ x then i ← i + 1 exchange A[i] <-> A[j] exchange A[i + 1] <-> A[r] return i + 1
示例
待排序数组:7 3 5 9 8 5 1 10 4 6
一趟排序过程分析:
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索递归
, 算法 c++
, 快速排序
, 排序
, 复杂度
, 空间
, 空间复杂度
, quicksort
, c++递归
, c++快速排序排序c
, c++ 排序
, c++排序算法
, 快速
复杂排序
java实现快速排序算法、快速排序算法实现代码、实现快速排序算法、c语言快速排序算法、c 快速排序算法,以便于您获取更多的相关知识。