1. 程式人生 > >簡單的折半查詢演算法(Java)

簡單的折半查詢演算法(Java)

折半查詢的優點是能夠最大減少查詢的時間複雜度,但也對查詢的目標陣列或集合提出一定要求,即陣列或集合中的數字排序必須是有序的,否則不能用折半查詢,只能用遍歷。以下是簡單的折半查詢演算法:

public class test {
	public static void main(String[] args) {
		int arr[]={11,15,18,19,21,25,28,29,35}; 
		System.out.println(funtion_4(arr,29));  //列印key在陣列中的下標
	}

	private static int funtion_4(int[] arr,int key) {
		int maxArr=arr.length-1;  //初始最大下標
		int minArr=0;             //初始最小下標
		int index=(minArr+maxArr)/2; //設定中間下標
		for(int i=0;i<arr.length;i++){ 
			if(arr[index]>key){   //陣列中間下標值比key大時,說明key在陣列的前半段
				maxArr=index;     //重新設定最大下標
				index=index/2;    //重新設定最小下標
			}else if(arr[index]<key) { //陣列中間下標值比key小時,說明key在陣列的後半段
				minArr=index;     
				index=(minArr+maxArr)/2;
			}
			else {
				break;
			}
		}
		return index;
	}
}

測試結果:

7