我正在尝试创建一个不使用数组的二进制搜索。它还需要计算在找到数字之前它进行了多少次搜索。我还必须使用随机访问文件。
RandomAccessFile raf=new RandomAccessFile(new File("Project 10"),"rw");
//writing in random numbers. Different numbers will be used when it is being tested
raf.writeInt(-5);
raf.writeInt(-1);
raf.writeInt(122);
raf.writeInt(124);
raf.writeInt(125);
raf.writeInt(256);
用户输入您要搜索的号码。我需要在不使用扫描仪类的情况下执行此操作。这样做的方法将非常有帮助
我知道这就是您使用数组进行二进制搜索的方式。我需要帮助弄清楚如何在没有数组的情况下做到这一点
public static int binarySearch(int[] list, int key) {
int low = 0;
int high = list.length - 1;
while (high >= low) {
int mid = (low + high) / 2;
if (key < list[mid])
high = mid - 1;
else if (key == list[mid])
return mid;
else
low = mid + 1;
}
return -low - 1; // Now high<low, key not found
}