java - 验证涉及 LinkedList 的 3 个循环的 Big-O
问题描述
在大约 7 小时内进行一次考试,并在我们的教练给我们的练习考试中提出这个问题。我在算法分析方面很可怕,因为我还没有足够的练习,而且导师也没有解释得很好。
下面是问题,每个问题的右侧是我认为循环的顺序。以下是我选择订单的原因:
a.) 每次调用 get() 时,必须从列表的前面或后面开始搜索(因为 LinkedList 是一个双链表。我们并没有真正讨论 LinkedList,我们只是创建了自己的 DLL和 SLL,所以我对 LinkedList 的熟悉程度并不是那么好)。
b.) 对 hasNext 的调用是 O(1) 并且在 while 循环内仅将迭代器从其当前位置推进(不必每次都从前面开始)。因此,它只横穿列表一次。
c.) 与 b 相同,因为 for-each 循环的工作方式与 b 中代码的工作方式完全相同。
无论如何,希望有人可以为我确认这些,如果它们不正确,请告诉我原因。
谢谢你。
解决方案
他们是对的!!原因和你提到的一样。
推荐阅读
- django - I am trying save the Exception to sql lite db in my django project.But getting error
- reactjs - React js click outside of the component does not work
- linux - 从 perf.data 重建具有真实运行时地址的 PIE 可执行文件
- c# - 使用列表将值从一个类传输到另一个类
- python - 在python中创建包含无限循环的进程
- kubernetes - 轻松检测 Kubernetes 上已弃用的资源
- multithreading - 多线程和最新检查
- python - 用于从 URL 检索维基百科页面摘要的 Python 库
- jboss7.x - Apache2 Virtualhost 负载均衡器配置未按预期工作
- python - 在出现整数的地方,有什么方法可以在 Python 中拆分字符串?