Big o 这个函数的渐近最坏运行时间是多少?
我试图找出调用另一个函数的函数的渐近最坏情况运行时间: 正在调用的函数(检查整数x是否是链表q的元素): 执行调用的函数(检查列表p是否是列表q的子集):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
第一个函数似乎总共需要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;
}