二分查找:
二分查找是一种高效的查找算法。它比顺序查找快的多,虽然它需要的条件是数组是有序的。 在查找时,我们先将被查找的数和数组的中间键比较,因为数组是有序的,所有若被查找的数小于数组的中间键则这个数只可能在数组的左部分,然后将中间键的左边数组当作一个数组来进行二分查找。反之,则在数组的右部分,同样将右部分的数组当作一个数组来进行二分查找。若相等,则命中。
循环实现二分查找
//循环实现二分查找
class Test_03{
public static void main(String []args){
int[] arr={1,3,5,6,8,9};
int key=3;
rank(key,arr);
}
public static void rank(int key,int[] arr){
int i=0;
int h=arr.length-1;
//中间数的下标
int mid=(i+h)/2;
while(i<=h){ //退出循环的条件 若一直没找到这个数,则会退出循环
if(arr[mid]==key){
System.out.println(mid);
break;
} //数组中间的数正好是被查找的数直接返回
else if(arr[mid]<key){
i=mid+1; //若小于被查找的数 则证明被查找的数只可能在数组右部分,则将右部分的数组重新进行一次二分查找
}else{
h=mid-1;//同理
}
mid=(i+h)/2;
}
}
}