【问题标题】:Time complexity of find in DoubleLinkedList?在 DoubleLinkedList 中查找的时间复杂度?
【发布时间】:2016-10-23 10:46:37
【问题描述】:

首先,我在网站上查看是否有关于此的帖子,但我找不到任何回答我的问题的帖子。

在我的算法和数据结构课程中,我们正在学习如何实现双链表。老师们提供了代码和每个函数时间复杂度的表格。 Table with time complexity of the functions.

Pior Caso 表示最坏情况 Melhor Caso 意味着最佳案例 Caso Esperado 表示平均情况

所以我的疑问是为什么找到最佳情况的时间复杂度是 O(1) 而不是 O(n),老师说我不能说最好的情况是 n=1 但他们也说最好的情况是我们要查找的元素是第一个。他们是什么意思???有人可以向我解释如何计算算法的最佳、最差和平均情况时间复杂度吗?

这里是查找的代码:

find algorithm

【问题讨论】:

    标签: java algorithm linked-list time-complexity


    【解决方案1】:

    假设您有以下数字的双向链表:

    1 <-> 5 <-> 3 <-> 9 <-> 8 <-> 10
    

    如果您从左侧开始搜索号码1,您会立即找到它。这是一个O(1) 操作,因为您所要做的就是触摸第一个元素(从左侧开始)。另一方面,如果您正在搜索数字10,并且不幸从左侧开始,那么您将不得不触摸链表中的每个元素,所有@其中 987654325@ 个(在本例中为 6 个)。这将是一个O(N) 操作。

    一般来说,在未排序的链表中查找元素需要N / 2 操作,这意味着您平均需要搜索一半的元素。这也是一般情况下的O(N)操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多