在 Dart 中按索引访问 List 元素的时间复杂度是多少?

lbe*_*tto 5 dart

Dart 中的列表是动态调整大小的,除非您在创建时指定大小。

所以我认为动态大小的会像 Java 中的 ArrayList 一样工作,而静态大小的会像 Java 中的 [] 一样工作。

这是正确的,还是总是 O(1) 访问?还是总是 O(n) 访问?

我一直无法在网上找到有关此的任何资源。

Gün*_*uer 6

运行时复杂度当然是O(1)。

我还没有在 Dart 核心中找到一个可能是 O(n) 的列表实现,但我可能错过了一个。

我认为https://api.dartlang.org/stable/1.24.3/dart-collection/LinkedList-class.html的复杂度为 O(n)

  • 那是对的。“List”接口并没有说索引是恒定时间的,从技术上讲,您可能会创建一个低效的“List”,但系统列表都是恒定时间可索引的。“LinkedList”类的命名很糟糕,因为它实际上*不是*一个“List”,而只是一个“Iterable”。 (3认同)
  • 有趣的。Dart 如何通过恒定时间索引管理动态大小的数组?是否将大小设置为大于所需的值,然后分配一个新数组并在空间不足时复制这些值? (3认同)