Big o 这个函数的渐近最坏运行时间是多少?

Big o 这个函数的渐近最坏运行时间是多少?,big-o,time-complexity,Big O,Time Complexity,我试图找出调用另一个函数的函数的渐近最坏情况运行时间: 正在调用的函数(检查整数x是否是链表q的元素): 执行调用的函数(检查列表p是否是列表q的子集): 第一个函数似乎总共需要3个季度的时间。但我无法准确计算第二个函数需要多少时间。现在是2p+p*3q时间吗?删除我得到的常数O(p+q)。对于一个列表中的每个项目,您将遍历另一个列表(完全是在最坏的情况下)。因此它是O(N*M),是N和M列表的长度。删除常量时丢失了p。它应该是O(p+pq),可以进一步简化…@jny你如何进一步简化它? boo

我试图找出调用另一个函数的函数的渐近最坏情况运行时间:

正在调用的函数(检查整数x是否是链表q的元素):

执行调用的函数(检查列表p是否是列表q的子集):


第一个函数似乎总共需要3个季度的时间。但我无法准确计算第二个函数需要多少时间。现在是2p+p*3q时间吗?删除我得到的常数O(p+q)。

对于一个列表中的每个项目,您将遍历另一个列表(完全是在最坏的情况下)。因此它是
O(N*M)
,是
N
M
列表的长度。

删除常量时丢失了p。它应该是O(p+pq),可以进一步简化…@jny你如何进一步简化它?
boolean chkitem (int x, IntList q) {
  while (q != null) {                // q times
    if (x == q.value) return true;   // q times
    q = q.next;                      // q times
  }
  return false;                      // constant time
}
boolean chklist (IntList p, Intlist q) {
  while (p != null) {                       // takes p time
    if (!chklitem(p.value, q)) return false; // takes p * 3q time?
    p = p.next;                             // takes p time
  }
  return true;
}