我有这个伪代码,我想分析这个算法的时间复杂度但是我不知道它
Proc Sort(A,l,r)
if(r-l+1<4)
then Quicksort(A,l,r)
else
Sort(A,l,r-3)
Sort(A,l+3,r)
所以我知道如果一个数组的元素小于4,我们将它传递给快速排序,否则我们将数组的大小减小三个然后传递左右部分所以我们将完成大小n <4的数组问题是我无法再次发生,我不确定这种算法在最坏情况分析中是否能更好地运作
感谢您的帮助
答案 0 :(得分:0)
那么,无论这个排序函数是否真的有效,找出运行时间的方法非常简单:
您将运行时的数学表达式写为数组大小的函数:
T(N)= ???
好吧,如果N <= 4,那么我们称之为Quicksort。现在,我们没有可用的函数定义,但无论如何,因为它只会使用最大为4的输入调用,我们可以将其运行时间视为常量,并将其称为C.
如果N> = 4,那么我们再次调用Sort,使用较小的数组。
所以:
对于N> = 4,T(N)是2 * T(N-3)。现在,此时应该为您提供运行时分析所需的所有信息。你为什么不从这里试一试,当你遇到困难时回到我们身边?