二分查詢法 Java實現
阿新 • • 發佈:2021-11-29
/*** * 二分查詢法 * 1、首先需要一個排序好的陣列 * 2、設定一個左邊界L=0 , 設定一個右邊界R=length-1; * 3、迴圈(l<=r) * 設定一箇中間值M = l+r >>> 2 //位運算 相當於 (l+r)/2 * 4、判斷m下標的值 * 4.1、如果下標值 等於 需要查的值返回下標 * 4.2、如果下標值 大於 需要查詢的值 那就 r=m-1; * 4.3、如果下標值 小於 需要查詢的值 那就 l=m+1; * @param arr 需要查詢的陣列 * @param tag 查詢的值 * @return 返回下標 */ public static int binarySearch(int[] arr,int tag){ int l=0,r=arr.length-1,m; while(l<=r){ m = (l+r)/2; System.out.println(m); if(arr[m] == tag){ return m; }else if(arr[m] > tag){ r = m - 1; }else{ l= m + 1; } } //沒有查詢到 return -1; }