- 二分查找,又称折半查找
- 注意:二分查找的数组必须是有序的
- 思路:
1)定义最大索引和最小索引
2)计算出中间索引:
如果要查的元素和中间索引对应的元素相等,返回中间索引
如果不相等:大了,左边找;小了,右边找
3)重写计算出中间索引:
大了:max = mid -1 ;
小了:min = mid+1 ;
4)继续回到2)进行重新计算在查找
public class Demo3 {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50};
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查找的值:");
int a = sc.nextInt();
int max = arr.length-1;
int min = 0;
int mid = (max+min)/2;
while(arr[mid] != a){
if(arr[mid] > a){
max = mid-1;
}else{
min = mid+1;
}
if(max < min){
System.out.println("没有这个数");
break;
}
mid = (max+min)/2;
}
System.out.println("这个数的索引为:"+mid);
}
}
结果:
请输入要查找的值:
20
这个数的索引为:1