基于折半查找算法,将查找点的选择改进为自适应的,根据关键字在整个有序表中所处的位置,让mid的值更靠近关键字key,这样也就间接减少了比较次数,大大提高了效率。
public class InsertionSearch{
public static int InsertionSearch(int[] a, int value, int low, int high)
{
int mid = low+(value-a[low])/(a[high]-a[low])*(high-low);
if(a[mid]==value)
return mid;
if(a[mid]>value)
return InsertionSearch(a, value, low, mid-1);
if(a[mid]<value)
return InsertionSearch(a, value, mid+1, high);
return -1;
}