Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不保证使用Array.BinarySearch?_Java_Complexity Theory_Binary Search - Fatal编程技术网

Java 不保证使用Array.BinarySearch?

Java 不保证使用Array.BinarySearch?,java,complexity-theory,binary-search,Java,Complexity Theory,Binary Search,Sun没有提到二进制搜索实现的任何复杂性。这是个错误吗?我知道应该是O(logn),但如果他们没有明确说明这一点,我会感到紧张。他们的一些算法是这样的,比如array.sort 你们中有人知道实际的实现吗?我自己还没有机会下载源代码!我猜这是一个微不足道的二进制搜索,但Sun有时会调整算法以获得更好的性能 根据定义,二进制搜索是O(logn)(平均值)猜测,没有必要明确提及它。数组。sort保证返回已排序的数组,无论您的数组包含什么 数组。binarySearch(…)(小写字母“b”btw)不

Sun没有提到二进制搜索实现的任何复杂性。这是个错误吗?我知道应该是
O(logn)
,但如果他们没有明确说明这一点,我会感到紧张。他们的一些算法是这样的,比如array.sort


你们中有人知道实际的实现吗?我自己还没有机会下载源代码!我猜这是一个微不足道的二进制搜索,但Sun有时会调整算法以获得更好的性能

根据定义,二进制搜索是O(logn)(平均值)猜测,没有必要明确提及它。

数组。sort
保证返回已排序的数组,无论您的数组包含什么

数组。binarySearch(…)
(小写字母“b”btw)不能保证看到的任何东西都可能是未排序的数组

现在编辑我的答案:查看代码显然不可能执行比O(logn)更差的操作。但是,当然不能保证您会找到正确的值

你们中有人知道实际的实现吗

您可以在JDK安装中或使用Google搜索找到实际实现的源代码。例如,搜索“java.util.Arrays.java.html”


但是我毫不怀疑二进制搜索方法是
O(logN)
。如果他们不是,有人会注意到。。。在过去10年左右的时间里。

java.util.Array的实现非常简单,没有优化的余地

您可以在
JAVA\u HOME/src.zip
中找到源代码。
此类中的排序算法是使用二进制搜索所必需的,是一种优化的快速排序算法,它提供了n*log(n)性能(在许多数据集上)。

查看代码,即使数组未排序,显然也不会比O(log n)差。@wizardofods-但您可能会得到错误的答案,当然。如果数组未排序,doco会明确表示结果未定义。最近,“此类中的排序算法,这是使用二进制搜索所必需的…”。为了清楚起见,您不需要使用
Array.sort(…)
。您可以确保使用任何有效的技术来订购阵列!!排序算法的复杂性与binarySearch的复杂性有什么关系?我也可以使用冒泡排序进行排序,然后使用
binarySearch
在O(logn)中查找元素。为了使用二进制搜索,必须对数组进行排序,因为我实际上查看了源代码,我刚刚添加了此信息。