package p2;
public class HalfSearch {
/**
* @param :折半查找算法思想
首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上步骤,直到找到满足条件的结果为止,若找不到,则返回失败。
*/
public static void main(String[] args) {
}
public static int halfSearch(int[] arr, int key){
//定义下标
int min,mid,max;
//初始下标
min = 0;
max = arr.length-1;
mid = (max+min)/2;
//判断是否查找成功
while(arr[mid]!=key){
if(key>arr[mid]){
min=mid+1;
}else if(key<arr[mid]){
max=mid-1;
}
if(min>max){
return -1;//查找失败,返回-1.
}
mid=(max+min)/2;//查找成功,返回所在的位置
}
return mid;//查找成功,返回对应元素的位置
}
}