执行二进制搜索的Java程序

74 阅读1分钟

编写一个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);
		}
	}
}

image.png

在这个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

使用递归或递归函数对数组进行二进制搜索的Java程序。

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