是否更好的排序数组,然后使用二进制搜索,或直接使用天真的解决方案?

时间:2015-05-05 17:23:10

标签: arrays sorting

为什么对数组进行排序然后使用二进制搜索会更好? 我们不能直接使用天真的解决方案吗?

3 个答案:

答案 0 :(得分:1)

如果您只需要查找一次或两次项目并且您的数组尚未排序,则排序和使用二进制搜索没有意义。

如果需要多次搜索同一个数组,则排序然后使用二进制搜索会更有效。对它进行排序一次然后使用二进制搜索结果在开始时做一些额外的工作以使后续搜索更快。 (找出断点留给读者练习)

答案 1 :(得分:0)

我猜测问题是在数组中找到一个项目。在数组上迭代的天真解决方案具有O(n)的复杂性。

对数组进行排序是一种O(nlog(n))操作,因此即使没有二进制搜索,它(理论上)也只比迭代数组慢。

答案 2 :(得分:0)

Why it is better to sort an array and then use the binary search?

你的陈述并非总是如此。

如果您需要搜索非常大的数组或非常频繁的项目, 会更好。或两者兼而有之。

如果您只需要访问大小为5的数组中的项目,只需迭代遍历它就可以了。

排序 IS 是一项重大任务。如果您可以定义需要多长时间并测量您预先通过排序保存的计算时间,那么您就得到了答案。通常我不会太在意获得的确切时间,我只知道该数组是否会被使用3次或300次,而且大部分时间都不需要计算答案。

之后,迭代与二进制搜索的确是计算时间的一半。