【发布时间】:2012-02-11 01:04:32
【问题描述】:
鉴于列表已排序,我不确定为什么 List 作为一般数据结构应该具有二进制搜索算法。接受索引的get 方法不是按顺序遍历列表,至少对于List 的子类型LinkedList 而言是这样吗?如果是这样,与LinkedList 的顺序比较相比,我看不到使用binarySearch 的任何优势。当然,除非我们将 List 限制为 ArrayList,否则我们可以更有信心地进行 binarySearch。
我的理解正确吗?谢谢。
【问题讨论】:
-
“鉴于列表已排序” - 这不是给定的。
-
我只是假设这是真的。或者我们总是可以先排序。
-
你说得对,在 LinkedList 上进行二分搜索是个坏主意。
-
好吧,javadoc 在这里会很有帮助:如果指定的列表没有实现
RandomAccess接口并且很大,这个方法将执行基于迭代器的二分查找,执行 O(n ) 链接遍历和 O(log n) 元素比较。
标签: java algorithm list data-structures binary-search