排序列表或二叉搜索树

本文关键字:搜索树 列表 排序 | 更新日期: 2023-09-27 18:15:12

如果搜索一个排序列表是O(log2 n),搜索一个平衡的BST也是O(log2 n),我应该使用哪一个假设如下:

  1. 元素将未排序接收,然后在所有元素加载后进行排序
  2. 不删除任何元素

哪个应该使用,为什么(排序列表或二叉搜索树)?

谢谢。

排序列表或二叉搜索树

如果您对数据进行一次排序然后只进行搜索,那么两种方法的渐近复杂性将是相同的。

我认为排序列表将有更低的实际运行时间和内存消耗,索引到一个数组是非常快的。

话虽这么说,也许使用哈希表对你会更好。创建它是O(n)(与之前的方法的O(n log n)相比),检索一个项目是O(1)(与O(log n)相比)。

设置两者(或所有三个)然后对它们进行基准测试是否过于困难?您可以使用包装器类从中抽象出数据结构,然后在两次基准测试之间更改包装器类。当然,我假设这里的时间是无限的。:)

它们都需要O(n log n)来创建/排序。所有的检索都是O(log n)

实际上,一个有序的二叉树可以表示为一个有序的数组,只要它是一个完全的完美树。所以它们在本质上是一样的