为什么binarySearch需要一个排序数组?

时间:2014-12-16 19:03:26

标签: java sorting binary-search

如果binarySearch方法要求您在将数组作为参数传递给方法调用之前对其进行排序,为什么不在binarySearch方法中进行排序?

2 个答案:

答案 0 :(得分:8)

二进制搜索的工作原理是假设数组的中间包含数组中的中值。如果它没有排序,这个假设没有意义,因为中位数可以在任何地方,将数组减半可能意味着你切断了你要搜索的数字。

二进制搜索本身不进行排序的原因是因为它不需要...数组已经排序。

答案 1 :(得分:3)

通常认为,定义专注于一个目标的功能是一种很好的编程习惯。这导致更多模块化,可重用的代码并避免代码重现。

例如,建议实现一个为您排序的函数,然后您可以简单地调用不同的搜索函数。这样,您就不必在要实现的每个搜索功能中重复排序代码。