什么是二分查找法?
二分查找法是一种效率较高的查找方法;
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
也就是说,我们要使用二分查找法查找关键字时,需要先将数组内的元素按升序排序,我上一篇文章中讲了使用冒泡排序法和选择排序法,这里就不做讲解。
下面呈上二分查找法的代码:
//假设arr数组是升序排序
public static int MidSeek(int[] arr,int num){
int max=arr.length-1;
int min=0;
int mid=(max+min)/2;
while(min<=max){
if(num==arr[mid]){
return mid;
}
else if(num>arr[mid]){
min=mid+1;
}
else if(num<arr[mid]){
max=mid-1;
}
mid=(max+min)/2;//记得每一次判断完要及时改变mid的值
}
//数组内没有与关键字相等的元素返回-1
return -1;
}
如果所给数组是降序排列,只需将两个else if 内的大于号和小于号方向一变即可。