【发布时间】:2014-10-21 13:54:06
【问题描述】:
我找到了以下快速排序算法:
function quicksort(array)
less, equal, greater := three empty arrays
if length(array) > 1
pivot := select any element of array
for each x in array
if x < pivot then add x to less
if x = pivot then add x to equal
if x > pivot then add x to greater
quicksort(less)
quicksort(greater)
array := concatenate(less, equal, greater)
我想通过找到递归关系来进行算法分析。对于我每次调用该算法时所看到的情况,例如,通过选择枢轴,在原始数组的第一个位置。它使用两个生成的列表再次调用快速排序,所以我将拥有:
one list ------ pow(2,0)=1
less greater--------2 lists----pow(2,1)=2
less greater less greater-------4 lists---pow(2,2)=4
所以它似乎形成了一种二叉树,所以如果我得到模式,它将是: 2^k=n,其中 k 是递归的级别,所以我将有 O(log n)
但是如何对复发进行分析呢?我的意思是,因为我没有计算函数的出栈过程,这是所有递归算法中都会发生的事情。
有什么帮助吗?谢谢
【问题讨论】:
标签: algorithm recurrence