二分查找,又称折半查找注意:二分查找的数组必须是有序的思路: 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