我正在尝试将二进制搜索实现到我的应用程序中。 我正在创建一种方法来浏览用户的联系人列表,将数字添加到数组中,对其进行排序,然后使用二进制搜索来查找数字等。
但我在想什么样的数组应该只使用ArrayList,然后对其进行排序然后实现二进制搜索。 或者有没有办法存储数据?喜欢集合,地图等?
场景 - 我将通过手机接收用户联系人。当然,每个数字都需要存储在数组或列表中(以较好者为准)。 然后排序该数组。 现在我想使用二进制搜索来搜索数字。由于用户可以拥有大量的联系人,我认为这是一个很好的方法
答案 0 :(得分:0)
我建议使用HashMap,因为它在排序数组中有O(1)查找与O(log n)查找。
因此,如果您的主要关注点是查找(搜索),请选择Hash。
答案 1 :(得分:0)
有三个基本选项:
TreeMap
。HashMap
。问题是你需要二元搜索的原因。如果您只是想按号码查找联系信息,那么从时间复杂度的角度来看,HashMap
可能是更好的选择。
如果您在键中有一些顺序并且对范围查询感兴趣,则二进制搜索会有意义。但即使在这种情况下,像TreeMap
这样的基于树的结构也是更好的选择。与时间复杂度(从几乎相同)不同,但从界面的角度来看更多。