我一直在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
答案 0 :(得分:0)
使用Arrays.sort()方法,你必须先对它进行排序
如果你想找到你可以使用循环的数字
for(int i=0;i<values.length;++i)
{
if(myNumber==values[i])
{
i=values.length;
foundValue=true;
}
}
答案 1 :(得分:0)
二进制搜索的主要标准是必须对数组进行排序。因此,如果要使用binarySearch
来查找元素,则必须提供已排序的数组。如果您不想对数组进行排序,则可以使用linear search
代替