Java Array二进制搜索 - 负输出,不想排序

时间:2017-04-11 15:18:09

标签: java arrays

我一直在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

2 个答案:

答案 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代替