【问题标题】:where to find time complexity of java methods?在哪里可以找到 java 方法的时间复杂度?
【发布时间】:2016-11-01 20:48:12
【问题描述】:

我是 java 新手,从 docs.oracle.com 学习各种方法,但奇怪的是,他们没有提到那里描述的任何方法的时间复杂度,例如在此页面上:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)
有一些关于“get()”方法的信息,但没有关于复杂性的信息!我找不到合适的地方来询问在哪里可以找到有关复杂性的信息。也许有像 cplusplus.com 这样的信息,但我不知道。我在网上搜索并失败了。所以,如果这是个愚蠢的问题,请原谅我。

【问题讨论】:

  • "size、isEmpty、get、set、iterator、listIterator操作都是在常数时间内运行的,add操作是在摊销常数时间内运行的,即添加n个元素需要O(n)时间。所有其他操作都以线性时间运行(粗略地说)。”。尝试阅读课程顶部的说明。
  • 请注意,不需要给出方法实现的时间复杂度。除了一些非常广泛使用的类之外​​,您通常不会找到它们。
  • 对不起,我没有注意到。但似乎仍然没有足够的空间在页面顶部提及所有方法的复杂性。我的问题是,是否有任何特定的地方可以阅读有关特定方法的所有内容?
  • 您应该将类​​的实现作为一个整体来考虑,而不仅仅是特定的方法。
  • @bradimus 没有让你明白,一个特定的方法有它自己的特定类的复杂性。你能详细说明你的意见吗?

标签: java time-complexity


【解决方案1】:

在该页面的最顶部它说

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

【讨论】:

  • 那么,我需要阅读整个页面以了解特定方法的具体内容吗?
  • @agassaa:大概它总是在顶部。或者,如果您阅读其他语言/库的文档,搜索复杂性的一种简单方法是搜索“线性”、“常数”、“二次”的出现。
  • 感谢您的建议 :) 顺便说一句,您认为这个问题需要删除吗?因为它可能不会提高生产力?
  • @agassaa:这个问题可能对寻找相同信息的人有所帮助。通常(这种情况也不例外)不需要删除问题。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2018-09-14
  • 2017-05-13
  • 2023-01-20
  • 1970-01-01
相关资源
最近更新 更多