您实际上并没有与数组值进行比较。在
while (low <= high) { mid = (low + high) / 2; if (mid > key) { high = mid - 1; } else if (mid < key) { low = mid + 1; } else { return mid; }}而是使用本节
while (low <= high) { mid = (low + high) / 2; if (a[mid] > key) { high = mid - 1; } else if (a[mid] < key) { low = mid + 1; } else { return mid; } }您找到索引是正确的,但是您所做的只是将索引号与密钥进行比较,这显然是不正确的。在编写时,
a[mid]您实际上将把您的密钥与index处的数字进行比较
mid。
另外代码的最后一行给出了编译错误,应该是
System.out.println("Found " + key + " at " + binarySearch(a, key));


