我有一个 uni 实用程序,可以使用 O() 表示法确定一小部分代码的复杂性。
代码是:
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i));
所讨论的列表是一个链接列表。对于我们的实践,我们得到了一个现成的 LinkedList 类,尽管我们必须编写自己的size()
and get()
方法。
这个问题让我困惑的是最终计算中应该算什么。问题问:
如果列表中有 100 个元素,它会进行多少次查找?在此基础上,使用 O() 表示法计算程序的复杂度。
如果我只是数get()
方法,它将平均进行 n/2 次查找,从而产生 O(n) 的大 O 表示法。然而,for循环的每次迭代都需要重新计算size(),这涉及到查找(以确定链表中有多少个节点)。
在计算这段代码的复杂度时,是否应该考虑到这一点?或者计算大小不算是查找?
I might be bit late to answer, but I think this for loop would actually be
解释
每次循环迭代您都将访问列表的第 i 个索引。因此,您的调用顺序将是:
这是因为每次迭代i递增,并且您正在循环n times.
因此,可以使用以下总和来评估方法调用的总数:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)