二分查找(必須是有序數列)
二分查找(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);
}
}