如果binarySearch方法要求您在将数组作为参数传递给方法调用之前对其进行排序,为什么不在binarySearch方法中进行排序?
答案 0 :(得分:8)
二进制搜索的工作原理是假设数组的中间包含数组中的中值。如果它没有排序,这个假设没有意义,因为中位数可以在任何地方,将数组减半可能意味着你切断了你要搜索的数字。
二进制搜索本身不进行排序的原因是因为它不需要...数组已经排序。
答案 1 :(得分:3)
通常认为,定义专注于一个目标的功能是一种很好的编程习惯。这导致更多模块化,可重用的代码并避免代码重现。
例如,建议实现一个为您排序的函数,然后您可以简单地调用不同的搜索函数。这样,您就不必在要实现的每个搜索功能中重复排序代码。