二分查找
二分查找(Binary search)也称折半查找,是一种效率较高的查找方法。但是,二分查找要求线性表中的记录必须按关键码有序,并且必须采用顺序存储。
二分查找算法的原理如下:
1. 设置查找区间:low = 0;high= n;
2. 若查找区间[low, high]不存在,则查找失败;否则转步骤3
3. 取中间位mid = (low + high) / 2;比较 target 与 arr[mid],有以下三种情况:
3.1 若 target < arr[mid],则high = mid - 1;查找在左半区间进行,转步骤2;
3.2 若 target > arr[mid],则low = mid + 1;查找在右半区间进行,转步骤2;
3.3 若 target = arr[mid],则查找成功,返回 mid 值;
Scanner sc = new Scanner(System.in);
int [] arr = {1,2,3,4,5,6,7,8,9};
System.out.println("请输入要查找的数字:");
int a = sc.nextInt();
int start = 0;
int end = arr.length-1;
int index = 0;
while(start <= end){
int mid = (start+end)/2;
if (a==arr[mid]) {
index = mid;
break;
}else if (a>arr[mid]) {
start = mid+1;
}else if (a<arr[mid]) {
end = mid-1;
}else{
System.out.println("找不到");
}
}
System.out.println("要查找的数字是:"+a+"它的索引是:"+index);
}