Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList是复杂性的索引吗?_Java_Arraylist_Time Complexity - Fatal编程技术网

Java ArrayList是复杂性的索引吗?

Java ArrayList是复杂性的索引吗?,java,arraylist,time-complexity,Java,Arraylist,Time Complexity,我在arraylist中有N个数字。要获得索引of,arraylist必须迭代最多N次,因此复杂性为O(N),正确吗?是的,正确。顺序基于最坏的情况。100%,它需要遍历列表以找到正确的索引。Source 是的,复杂性是O(N) size、isEmpty、get、set、iterator和listIterator操作以固定时间运行。添加操作在摊销的固定时间内运行,即添加n个元素需要O(n)个时间。所有其他操作都在线性时间内运行(粗略地说)。与LinkedList实现相比,常数因子较低。确实如此。

我在arraylist中有N个数字。要获得
索引of
,arraylist必须迭代最多N次,因此复杂性为
O(N)
,正确吗?

是的,正确。顺序基于最坏的情况。

100%,它需要遍历列表以找到正确的索引。

Source

是的,复杂性是O(N)


size、isEmpty、get、set、iterator和listIterator操作以固定时间运行。添加操作在摊销的固定时间内运行,即添加n个元素需要O(n)个时间。所有其他操作都在线性时间内运行(粗略地说)。与LinkedList实现相比,常数因子较低。

确实如此。最佳情况为1 so(1),平均情况为N/2 so(N),最坏情况为N so(N)

阵列列表是一个具有更多功能的阵列。因此,对ArrayList执行的操作的复杂度顺序与对数组执行的操作的复杂度顺序相同

是的,它是O(n),因为在最坏的情况下,它需要遍历列表中的每个项目


要达到更好的效果,唯一的办法就是在列表中加入某种结构。最典型的例子是在O(logn)时间内使用二进制搜索查看排序列表

在最坏的情况下,元素位于最后一个位置,需要N步,即O(N)。在最佳情况下,您正在搜索的项目是第一个项目,因此复杂性为O(1)。平均长度是平均步数的一部分。如果我们没有进一步的背景,那么我们可以这样计算:

avg=(1+2+…n)/n=(n*(n+1)/2)/n=(n+1)/2

如果n->infinity,那么加上一个正常数并除以一个正常数没有效果,我们仍然有无穷大,所以它是O(n)

但是,如果要处理大型有限数据,则可能需要如上所述计算准确的平均值

此外,您可能有一个上下文,它可以帮助您在计算中获得更高的准确性

例如:


让我们考虑当数组按使用频率降序排列时的示例。如果您对

indexOf
的调用是一种用法,那么最可能的项是第一项,然后是第二项,依此类推。如果您有每个项目的确切使用频率,那么您将能够计算出可能的等待时间。

最坏情况下的复杂度为O(N),但典型的复杂度也是O(N),因为它必须平均搜索一半。c、 f.HashMap.get()的典型复杂度为O(1),但最坏情况下的复杂度为O(N)。实际上,平均情况为(N+1)/2。它不必迭代列表中的每一项。如果按顺序迭代它们,当找到第一个时,它将返回索引。@LajosArpad澄清了第一句话。已确认:)