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

aur*_*ius 5 java sorting binary-search

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

Law*_*llo 9

二进制搜索通过假设数组的中间包含数组中的中值来工作.如果它没有排序,这个假设没有意义,因为中位数可以在任何地方,并且将数组切成两半可能意味着你切断了你要搜索的数字.

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

  • 问题不是数组必须排序的原因,而是为什么`binarySearch`方法本身不进行排序. (2认同)
  • 如果他了解二进制搜索的工作原理,他将知道该问题的答案。这就是为什么我解释它。 (2认同)

小智 5

定义专注于一个目标的函数通常被认为是良好的编程实践。这会产生更加模块化、可重用的代码,并避免代码重复。

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