【演算法資料結構Java實現】折半查詢

李博Garvin發表於2014-11-24

1.背景

       以一個題目為例,一個整數x是一組按大小順序排列好的數列中的一個數,我們要找到x在數列中的索引位置。

比如按從小到大排列的數列:

-3,-2,0,4,5,7,12,64

我們要找到數字7的位置,如果是線性查詢,時間複雜度是O(n),如果用折半查詢的話,時間複雜度是O(log(n)),因為每次折半,計算量少一半,所以取對數。


2.程式碼

package Algorithm_analysis;

public class Bisearch {

	static int[] array={-3,-2,0,4,5,7,12,64}; 
	public static void main(String args[]){
	   int left=0;
	   int right=array.length;
	   int center=0;
	   int k=7;
	  
	   while(left<=right){
		  center=(right+left)/2;
		   if ((array[center]-k)==0){
			  System.out.print(center);
			  break;
		   }
		   else{
            if((array[center]-k)>0){
                 right=center;
            }
                 else{
                	 left=center;
                 }
                	 }
                 }
	   }
}
	
	
//輸出結果7	

/********************************

* 本文來自部落格  “李博Garvin“

* 轉載請標明出處:http://blog.csdn.net/buptgshengod

******************************************/



相關文章