Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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数组二进制搜索-负输出,don';我不想分类_Java_Arrays - Fatal编程技术网

Java数组二进制搜索-负输出,don';我不想分类

Java数组二进制搜索-负输出,don';我不想分类,java,arrays,Java,Arrays,我一直在对int[]数组使用binarySearch方法来查找特定int值的偏移量,但有时效果很好,有时会返回负数 在其他问题中,建议我首先对数组进行排序,但我不想这样做,因为必须保持数组的顺序 System.out.println("Index of last point: "+validFlag+" "+Arrays.binarySearch(validFlags,validFlag)); 我觉得奇怪的是,这在某些情况下有效,而在其他情况下无效,在其他情况下,我可以向您保证int值在数组中

我一直在对int[]数组使用binarySearch方法来查找特定int值的偏移量,但有时效果很好,有时会返回负数

在其他问题中,建议我首先对数组进行排序,但我不想这样做,因为必须保持数组的顺序

System.out.println("Index of last point: "+validFlag+" "+Arrays.binarySearch(validFlags,validFlag));
我觉得奇怪的是,这在某些情况下有效,而在其他情况下无效,在其他情况下,我可以向您保证int值在数组中! 建议

以下是该程序的一些控制台输出:

Possible flags: 26317584
Current flag: 6
Index of last point: 6 -7
使用Arrays.sort()方法,必须首先对其进行排序

如果您只想找到号码,可以使用循环

  for(int i=0;i<values.length;++i)
  {  
      if(myNumber==values[i])
      {
        i=values.length;
        foundValue=true;
      }
  }

用于(int i=0;i二进制搜索的主要标准是必须对数组进行排序。因此,如果要使用
binarySearch
查找元素,则必须提供一个已排序的数组。如果不想对数组进行排序,则可以使用
linear search
,而不能对未排序的数组使用二进制搜索。i如果您不想排序,则必须逐个检查元素。请提供不起作用的示例值和完整代码。二进制搜索的工作原理是首先转到数组的中位数,然后说“好”,我要查找的数字大于或小于此数字。如果搜索参数大于中位数,则对其执行相同的操作数组的右半部分,依此类推。之所以得到-1,是因为它找不到它,因为算法需要排序数组。搜索未排序数组的唯一方法需要O(N)个时间,所以只需使用for循环来查找它或
.contains()
method这不仅仅是建议必须对数组进行排序。这是一项要求。对数组进行排序或放弃使用二进制搜索。