二分查找

二分查找(必須是有序數列)

二分查找(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);
    }
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章