5

其中Collection是:

binarySearch(List list, Object key)

为什么二进制搜索不适用于Set?为什么它只用于List

有什么具体原因吗?

4

4 回答 4

8

二分查找意味着一个已排序的容器。一个集合要么是无序的(HashSet),在这种情况下不能执行二分查找,要么是有序的(TreeSet),在这种情况下它的查找操作已经和二分查找一样有效(即O(Log2(N)))。

于 2012-08-14T13:50:23.490 回答
5

二进制搜索适用于有序集合。套装未订购。

于 2012-08-14T13:51:31.963 回答
4

在这种情况下,二进制搜索仅在 List 已排序和排序时才有效。即它不适用于所有列表,仅适用于预先排序的列表。

一个集合没有排序,也可能没有排序。

如果 Set 已排序,可以使用 NavigableSet 的方法之一

于 2012-08-14T13:50:47.597 回答
3

A set is unordered, and doesn't have indexes for the elements it contains. Therefore a binarySearch() method that returns the index of the element does not make sense.

于 2012-08-14T13:49:58.747 回答