编写一个 Java 程序来对数组执行二分查找。我们有一个接受数组和数字来执行二分查找的 binarySearch 方法。
package Remaining;
import java.util.Arrays;
import java.util.Scanner;
public class BinarySearch0 {
private static Scanner sc;
public static void main(String[] args) {
sc= new Scanner(System.in);
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90};
System.out.print("Please Enter Number to Search = ");
int num = sc.nextInt();
int result = Arrays.binarySearch(arr, num);
if(result == -1)
{
System.out.println("Number Not Found");
}
else
{
System.out.println("Number Found at index position = " + result);
}
}
}

Java 程序执行二分查找
在这个二分查找 示例 中,我们将不使用内置函数来查找数组中的中间元素。然后,如果查找值相同,则打印该位置。如果小于键值,则增加起始值。否则,则减小结束值。
package Remaining;
import java.util.Scanner;
public class BinSea1 {
private static Scanner sc;
public static void main(String[] args) {
sc= new Scanner(System.in);
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90};
System.out.print("Please Enter Number to Search = ");
int num = sc.nextInt();
int result = binSrchRes(arr, num, 0, arr.length);
if(result == -1)
{
System.out.println("Number Not Found");
}
else
{
System.out.println("Number Found at index position = " + result);
}
}
public static int binSrchRes(int arr[], int num, int start, int end)
{
int mid;
while(start <= end)
{
mid = start + (end - start) / 2;
if(arr[mid] == num)
{
return mid;
}
if(arr[mid] < num)
{
start = start + 1;
}
else
{
end = end - 1;
}
}
return -1;
}
}
Please Enter Number to Search = 80
Number Found at index position = 7
Please Enter Number to Search = 9
Number Not Found
下面的程序将使用递归或递归函数对数组执行二分查找。
package Remaining;
import java.util.Scanner;
public class BinSea2 {
private static Scanner sc;
public static void main(String[] args) {
sc= new Scanner(System.in);
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90};
System.out.print("Please Enter Number to Find = ");
int num = sc.nextInt();
int result = binSeaRes(arr, num, 0, arr.length);
if(result == -1)
{
System.out.println("Number Not Found");
}
else
{
System.out.println("Number Found at index position = " + result);
}
}
public static int binSeaRes(int arr[], int num, int start, int end)
{
int mid;
if(start <= end)
{
mid = start + (end - start) / 2;
if(arr[mid] == num)
{
return mid;
}
if(arr[mid] > num)
{
return binSeaRes(arr, num, start, mid - 1) ;
}
else
{
return binSeaRes(arr, num, mid + 1, end) ;
}
}
return -1;
}
}
Please Enter Number to Find = 60
Number Found at index position = 5