二分法查找算法又叫折半查找,要求待查找的序列有序,每次查找都取中间位置的值与待查关键字进行比较,如果中间位置比待查关键字大,则在序列的左半部分继续执行该查找过程,如果中间位置的值比待查关键字小,则在序列的右半部分进行查找,知道找到关键字为止,否则无关键字。
图示:
package com.findNumsWays;
//二分查找算法
public class binarySearch {
public static void main(String[] args) {
int array[]={1,2,3,4,6,8,9};
System.out.println(binary(array, 2));
}
public static int binary(int []array,int a){
int low=0;
int high=array.length-1;
int mid;
while (low<=high){
mid=(low+high)/2;
if(array[mid]==a){
return mid;
}else if(a>array[mid]){
low=mid+1;
}else if(a<array[mid]){
high=mid-1;
}
}
return -1;
}
}
注意点:首先要求的是二分法查找排序是有序序列。