15.二分查找算法
二分查找算法(折半查找):前提是在已经排好的数组中,通过待查找的元素与中间索引值对应的元素进行比较,若大于中间索引值对应的元素,去右半部分查找,否则,去左半部分查找。以此类推。直到找到为止;找不到返回一个负数。
import java .util.Scanner;
public class test14{
public static void main(String[] args){
//必须保证数列是有序的
int[] num ={10,20,50,65,88,90};
//增加了键盘输入功能
Scanner input =new Scanner(System.in);
int key =input.nextInt();
int index=binarySearch(num,key);
System.out.println(index);
}
//二分查找算法
public static int binarySearch(int[] num,int key){
int start =0;//开始下标
int end=num.length-1;//结束下标
//结束位置一定大于开始位置
while(start<=end){
int middle=(start+end)/2;
//如果中间值大于
if(key<num[middle]){
end=middle-1;
}else if(key>num[middle]){
start=middle+1;
}else{
//找到下标了
return middle;
}
}
return -1;}
}