这个算法的界限或T(n)是多少?

时间:2014-02-05 00:15:13

标签: algorithm recursion bounds recurrence

def unknownsort(A[],x,y):
 if x ==y+1:
   if A[x]>A[y]:
     switch A[x] and A[y]
 elif y > x+1:
    z = (y-x+1)/3
    unkownsort(A[],x,y-z)
    unkownsort(A[],x+z,y)
    unkownsort(A[],x,y-z)

这个等式有没有名字?对于T(n)所拥有的是什么 T(n)= 3T(n)+ Theta(n)是对的吗?我打算使用师父的定理,但我不确定这是否正确。你也称之为寻找T(n)

的过程

我认为unkownsort被调用三次,T(n)= 3T(n),但它有一个基本情况,取决于输入的大小,所以T(n)= 3T(n)+ theta(n )。现在我想知道这个等式是否会因为“z”而错误,因为z操纵了我的数组的大小。

不知何故我想出了这个:T(n)= 3T(n / 3)+1。这是正确的吗?

1 个答案:

答案 0 :(得分:0)

好的,作业,让我们坚持提示。

3T(n)中,3是正确的,因为有3个递归调用,但T(n)不是 - n应该是({{1}下一个递归调用的大小,目前你说的是大小相同。

n/c不正确 - 除了递归调用之外,函数中完成了多少工作?工作量是否取决于Theta(n)x(您应该假设任何算术运算总是需要一定的时间,尽管这不是严格正确的)?

你有没有给我们整个功能?如果是这样,我不相信你的算法会做任何特别有用的事情(虽然它看起来像是排序,我不相信它,但我可能是错的),因此可能没有#&# 39;有名字。

T(n)方程称为recurrence relation,因此找到它的过程简称为查找递归关系的过程(我不知道单个术语来表示这一点)。

(您在问题中编辑的更新公式是正确的)