首先,我在网站上查看是否有关于该帖子的帖子,我找不到任何回答我问题的帖子。
在我的算法和数据结构类中,我们学习了如何实现双链表。老师提供了代码和表格,其中包含每个功能的时间复杂度。 Table with time complexity of the functions.
Pior Caso意味着最坏的情况 Melhor Caso意味着最佳案例 Caso Esperado意味着平均情况
所以我怀疑为什么找到O(1)而不是O(n)的最佳案例时间复杂性,老师说我不能说最好的情况是n = 1,但他们也说最好的情况是我们正在寻找的元素是第一个。这是什么意思???有人可以向我解释如何计算算法的最佳,最差和平均时间复杂度吗?
这是find的代码:
答案 0 :(得分:2)
想象一下,您有以下双重链接的数字列表:
1 <-> 5 <-> 3 <-> 9 <-> 8 <-> 10
如果您从左侧开始搜索号码1
,您会立即找到它。这是一个O(1)
操作,因为你所要做的就是触摸第一个元素(从左边开始)。另一方面,如果您正在搜索数字10
,并且非常不幸也从左侧开始,那么您将不得不触摸链接列表中的每个元素,所有N
他们(在这种情况下为6)。这将是O(N)
操作。
通常,要查找未排序的链接列表中的元素,需要N / 2
个操作,这意味着您需要平均搜索一半的元素。在一般情况下,这也是O(N)
操作。