原理:每一次查找,将查找的区间从中间分为两部分,取其中一部分再次进行这样的查找。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。 但是,折半查找的先决条件是查找表中的数据元素必须有序。
package com.monfolld;
public class half {
public static void main(String[] args){
int[] arr={13,15,19,28,34,56,88,106};
int index=halfSearch(arr,106);
System.out.println("index"+index);
}
public static int halfSearch(int[] arr,int key){
int min,max,mid;
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 (max<min)
return -1;
mid=(max+min)/2; //将中间值再次折半
}
return mid;
}
}