java - 在 Java 中,为什么在使用二进制搜索搜索数组时返回负数?

标签 java arrays search sorting binary

我是 Java 初学者,正在学习使用数组。我理解在使用Array的二分查找法时,如果没有找到条目,它会返回一个负数。但是,在下面的代码中,我得到了 9、10 和 11 返回的负数。

我想知道是否有人可以帮助指出我做错了什么?谢谢!

   String [] oneToSixteen = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"};

   System.out.println("Searching for 7: "+ Arrays.binarySearch(oneToSixteen, "7"));
   System.out.println("Searching for 8: "+ Arrays.binarySearch(oneToSixteen, "8"));
   System.out.println("Searching for 9: "+ Arrays.binarySearch(oneToSixteen, "9"));
   System.out.println("Searching for 10: "+ Arrays.binarySearch(oneToSixteen, "10"));
   System.out.println("Searching for 11: "+ Arrays.binarySearch(oneToSixteen, "11"));

我得到的输出是:

Searching for 7: 6
Searching for 8: 7
Searching for 9: -17
Searching for 10: -2
Searching for 11: -2

如有任何帮助,我们将不胜感激。

最佳答案

这是因为您的数组是 String 而不是 int 的数组,并且未排序

文档明确指出,搜索的数组必须排序,否则结果未定义。

要对数组进行排序,您可以使用 sort method数组类的。

关于java - 在 Java 中,为什么在使用二进制搜索搜索数组时返回负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493482/

相关文章:

android - 改变搜索对话框

c - 在文本中搜索字符 block (单词)

java - 是否应该对所有编程情况使用异常处理?

java - 是否可以将 dependencyManagement 外包给一个文件(有本地 BOM)?

javascript : interpolate an array of numbers

java - 改变数组元素的顺序

c++ - 搜索 3d 数组

java - 解析 C# 中以 JSON 发送的 DateTime 类型

java - session 不会在表单提交时自动传播?

javascript - Array[0] 但里面还有数据