用于对大型数据集进行二分搜索的数据结构



我正在尝试在我的应用程序中实现二进制搜索。 我正在创建一种方法来浏览用户的联系人列表,将数字添加到数组中,对其进行排序,然后使用二进制搜索来查找数字等。

但是我在想我应该使用ArrayList,然后对其进行排序,然后实现二进制搜索。 或者有没有办法存储数据?比如套装,或者地图等?

场景 - 我将从他们的手机获取用户的联系人。当然,每个数字都需要存储在数组或列表中(以更好的为准(。 然后对该数组进行排序。 现在我想使用二进制搜索搜索一个数字。由于用户可以拥有较大的联系人集,我认为这将是一个很好的方法

有三个基本选项:

  • 排序列表或数组 + 二叉搜索。
  • 基于树的结构,如TreeMap
  • 基于哈希的结构,如HashMap

问题是为什么需要二叉搜索。如果您只想按号码查找联系信息,那么从时间复杂性的角度来看,HashMap可能是更好的选择。

如果您对键有一些顺序并且对范围查询之类的内容感兴趣,则二叉搜索将是有意义的。但即使在这种情况下,像TreeMap这样的基于树的结构也是更好的选择。与其说是时间复杂度(几乎相同(,不如说是从界面的角度来看。

我建议使用HashMap,因为它在排序数组中具有O(1(查找与O(log n(查找。

因此,如果您主要关心的是查找(搜索(,请选择哈希。

最新更新