相关疑难解决方法(0)

确认Java LinkedList"foreach"循环

美好的一天,

有人可以确认在这篇文章的底部说了什么java - 迭代一个链表 该帖子提到你可以使用for(char c:linkedlistofchars)语法,它仍然是O(n).我想要访问一个看起来像这样的列表......

a b c d e f
Run Code Online (Sandbox Code Playgroud)

实际上在for循环的每次迭代期间都会在链表的开始处运行,就像这样......

a ab abc abcde abcdef 
Run Code Online (Sandbox Code Playgroud)

导致访问时间不是O(n).

这究竟是如何工作的?它对数组和数组运算符有意义,但java语法如何知道如何使用java中的foreach循环遍历链表?

我认为LinkedList数据结构只是一个额外的库,而不是核心语言语法的一部分.(我确实知道LinkedList类在java中是标准的)

我希望我能够清楚地解释我的担忧....谢谢

java foreach containers for-loop

6
推荐指数
1
解决办法
9125
查看次数

使用O表示法在for循环中的LinkedList上调用get()的复杂性

我有一个通用的实践,可以使用O()表示法确定一小段代码的复杂性。

代码是:

for (int i = 0; i < list.size(); i++)
    System.out.println(list.get(i));
Run Code Online (Sandbox Code Playgroud)

有问题的列表是链接列表。对于我们的实践,我们给了现成的LinkedList类,尽管我们必须编写自己的size()get()方法。

使我困惑的是在最终计算中该算什么。问题问:

如果列表中有100个元素,它将进行多少次查找?基于此,使用O()表示法计算程序的复杂度。

如果我只是在计算get()方法,它将平均进行n / 2次查找,从而导致O(n)的O表示法很大。但是,for循环的每次迭代都需要重新计算size(),这涉及到查找(以确定链接列表中有多少个节点)。

在计算此代码的复杂度时,是否应考虑到这一点?还是计算大小不算作查找?

java linked-list

3
推荐指数
3
解决办法
1万
查看次数

标签 统计

java ×2

containers ×1

for-loop ×1

foreach ×1

linked-list ×1