题目:编写代码简单实现二分查找算法
代码示例:
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
//二分查找 前提:数组有序
int[] arr = { 2,3,6,7,9,10,12,43,78};
Scanner scanner = new Scanner(System.in);
int toSearch = scanner.nextInt();
int pos = binarySearch(arr,toSearch);
if ( pos != -1){
System.out.println(toSearch+" 在数组中的下标为:"+pos);
}else{
System.out.printf("该数组中未查到 "+toSearch+" 所在位置");
}
}
//直接取整个数组的中间元素,将中间元素和待查找元素进行对比
private static int binarySearch(int[] arr, int toSearch) {
//创建一个待查找的区间 [left,right]
int left = 0;
int right = arr.length - 1;
while (left <= right){
int mid = (left + right) / 2;
if ( toSearch < arr[mid]){
right = mid - 1; //淘汰右侧数值
} else if( toSearch > arr[mid]){
left = mid + 1; //淘汰左侧数组
}else {
return mid;
}
}
return -1; //数组下标返回-1时表示未找到该数值
}
}
运行结果: