13

我们学习了大 O 表示法,但我也经常看到 T(n)。例如,

public static Comparable[] mergeSort(Comparable[] A, int low, int high) {
  if (low < high) { //at least 2 elements?                //cost = c
    int mid = (low + high)/2;                             //cost = d
    Comparable[] A1 = mergeSort(A, low, mid);             //cost = T(n/2) + e
    Comparable[] A2 = mergeSort(A, mid+1, high);          //cost = T(n/2) + f
    return merge(A1,A2);                                  //cost = g n + h
  }
  .... //cost = i

我相信 c,d,e,... 是任意命名的常量。

T(n/2) 是什么意思?T符号与大O有什么关系?

4

2 回答 2

12

这种表示法指的是函数运行所需的最大时间量(或更具体地说,是步骤)。

T(n) 可能比 O(n) 更具体;例如,假设您有一个程序,对于任何输入,都需要n^2+n+1运行以下步骤:

T(n) = n^2+n+1
O(n) = n^2

更多信息可以在这里找到。

于 2012-11-29T03:13:52.607 回答
0

我个人以前从未见过这种表示法,但我怀疑它指的是“big-Theta”(Θ),它既是渐近上界(big-O)又是渐近下界。

也相关:Big-Omega (Ω) 仅用于表示渐近下界(镜像 big-O)。

于 2012-11-29T03:14:00.430 回答