数组的遍历查找和二分查找
二分查找
1.二分法:①有序数组。②每次选择一半的区域查找。
2.二分查找的缺点:①要有序。②查找数靠前,与遍历查找差不多。
/*
数组的查找
*/
class ArraySearch{
public static void main(String[] args) {
//有序数组
int[] arr={1,2,3,6,8,9};
//目标数
int n=1;
/*//遍历查找
for(int i=0;i<arr.length;i++){
//比较
if(arr[i]==n){
System.out.println(i);
break;
}
}*/
//二分查找
//最小下标
int min=0;
//最大下标
int max=arr.length-1;
//中间下标
int mid=(min+max)/2;
//标志位
boolean flag=true;
//操作循环
while(arr[mid]!=n){
//查找数大于中间下标的元素值
if(n>arr[mid]){
min=mid+1;
}
//查找数小于下标的元素值
if(n<arr[mid]){
max=mid-1;
}
//判断不在范围之内的数
if(min>max){
System.out.println("查无此数");
flag=false;
break;
}
//计算新的中间下标
mid=(min+max)/2;
}
if(flag)
System.out.println(mid);
}
}