题目:利用二分法在有序数组中查找一个数的位置。
代码:
import java.util.Scanner;
public class BS {
//二分法查找数的核心代码
public static boolean bs(int arr[], int num) {
if(arr == null || arr.length == 0)
{
return false;
}
int L = 0;
int R = arr.length - 1;
int mid = L + ((R - L) >> 1);
while(L < R)
{
if(num == arr[mid])
return true;
else if(num > arr[mid])
L = mid + 1;
else
R = mid - 1;
mid = L + ((R - L) >> 1);
}
return arr[R] == num;
}
public static void main(String args[])
{
//输入一个正整数,代表数组长度
System.out.print("请输入一个整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
//定义数组
int arr[] = new int[n];
for(int i = 0; i < n; i++)
{
arr[i] = input.nextInt();
}
//输出你想要在数组中寻找的数
int num = input.nextInt();
//关闭输入流
input.close();
//调用二分法函数
if(bs(arr, num))
System.out.println("这个数在数组里面");
else
System.out.println("这个数不在数组里面");
}
}
实验截图: