Java 哪一个搜索速度更快;有序arraylist“;或;英国夏令时;?

Java 哪一个搜索速度更快;有序arraylist“;或;英国夏令时;?,java,arraylist,binary-search-tree,Java,Arraylist,Binary Search Tree,当BST命令时,它工作正常,但在某些情况下可能不平衡。在这些情况下会发生什么,BST仍然有效吗? 我们可以直接访问ArrayList中的第n个元素,那么它是否比BST更有效?排序数组总是搜索最快的。 二进制搜索树会消耗更多内存,并且可能需要更高级别的间接寻址,这会影响性能并增加缓存未命中的可能性。排序数组的搜索速度总是最快的。 二进制搜索树消耗更多内存,可能需要更高级别的间接寻址,这会影响性能并增加缓存未命中的可能性。在排序数组中搜索值的速度稍快,尽管它具有相同的渐近界限。如果您正在搜索第n个元

当BST命令时,它工作正常,但在某些情况下可能不平衡。在这些情况下会发生什么,BST仍然有效吗?
我们可以直接访问ArrayList中的第n个元素,那么它是否比BST更有效?

排序数组总是搜索最快的。
二进制搜索树会消耗更多内存,并且可能需要更高级别的间接寻址,这会影响性能并增加缓存未命中的可能性。

排序数组的搜索速度总是最快的。
二进制搜索树消耗更多内存,可能需要更高级别的间接寻址,这会影响性能并增加缓存未命中的可能性。

在排序数组中搜索值的速度稍快,尽管它具有相同的渐近界限。如果您正在搜索第n个元素排序的数组,则速度要快得多。在Java中,TreeSet和TreeMap之类的东西是基于红黑树的,红黑树是自平衡的,不会影响运行时间。(它们的最大深度为2log(n),而不是完美平衡树的log(n)。

在排序数组中搜索值的速度稍快,尽管它具有相同的渐近界。如果您正在搜索第n个元素排序的数组,则速度要快得多。在Java中,TreeSet和TreeMap之类的东西是基于红黑树的,红黑树是自平衡的,不会影响运行时间。(它们的最大深度为2log(n),而不是完美平衡树的log(n)。

如果使用二进制搜索来搜索有序的
ArrayList
,它的速度与BST的最佳情况一样快。因为这就是它。如果你用线性搜索,它不是。你可能会发现这段关于不同数据结构性能的视频很有趣@EJP我怀疑这是关于线性搜索的,因为没有必要提及arraylist是有序的。如果使用二进制搜索来搜索有序的
arraylist
,那么它的速度与BST的最佳情况一样快。因为这就是它。如果你用线性搜索,它不是。你可能会发现这段关于不同数据结构性能的视频很有趣@EJP我怀疑这是关于线性搜索的,因为没有必要提及arraylist是按顺序排列的。