一、查找算法的思路
折半查找适用于在有序表中进行查找,先与有序表的中间元素进行比较,有三种情况:1)等与中间元素,则查找成功;2)小于中间元素,则继续在小数区间查找;3)大于中间元素,则继续在大数区间进行查找。
二、适用情况
1、适用于在有序表中查找;
2、适用于一经建立就很少改动,并且经常需要查找的线性表。
三例子
public class BinarySearch {
public static void Search(int[] data,int high,int low, int key){
int flag = -1;
do{
int mid = (high + low)/2;
if(data[mid]==key){
System.out.println("find the key value : " + mid);
flag = 1;
break;
}else if(data[mid] > key) {
//进入小数区间查找
high = mid - 1;
}else {
//进入大数区间查找
low = mid + 1;
}
}while(low <= high);
if(flag!=1){
System.out.println("can't find the key value!!");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] test = new int[]{1,3,16,20,91,120,534,555,689};
Search(test, test.length-1, 0, 981);
}
}