二分查找(必须是有序数列)
二分查找(BinarySearch)的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。
JAVA实现
/**
* @(#)BinarySearch.java
*
* BinarySearch application
*
* @author kuroro
* @version 1.00 2011/9/6
*/
public class BinarySearch {
public static int search(int[] a,int index)
{
int low = 0;
int high = a.length-1;
while(low<=high)
{
int middle = (low+high)/2;
if (index==a[middle])
{
return middle;
}
if(index<a[middle])
{
high = middle-1;
}
if(index>a[middle])
{
low = middle+1;
}
}
return -1;
}
public static void main(String[] args) {
int[] a={1,2,3,7,8,9,23};
int x = BinarySearch.search(a,8);
int y = BinarySearch.search(a,24);
System.out.println(x);
System.out.println(y);
}
}