簡單的折半查詢演算法(Java)
阿新 • • 發佈:2018-12-20
折半查詢的優點是能夠最大減少查詢的時間複雜度,但也對查詢的目標陣列或集合提出一定要求,即陣列或集合中的數字排序必須是有序的,否則不能用折半查詢,只能用遍歷。以下是簡單的折半查詢演算法:
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