【Java】陣列二分查詢元素
阿新 • • 發佈:2019-02-07
查詢前提:陣列元素有序
要求:查詢元素對應的索引
程式碼實現:
public class Test_erfenfa { public static void main(String[] args) { int[] arr = {11,22,33,44,55,66,77}; int i = getIndex(arr,33); System.out.println(i); } public static int getIndex(int[] arr, int value) { int min = 0; int max = arr.length - 1; int mid = (min + max) / 2; while(arr[mid] != value) { //當中間值不等於要找的值,就開始迴圈查詢 if(arr[mid] < value) { //當中間值小於了要找的值 min = mid + 1; //最小的索引改變 }else if (arr[mid] > value){ //當中間值大於了要找的值 max = mid - 1; //最大的索引改變 } mid = (min + max) / 2; //無論最大還是最小改變,中間索引都會隨之改變 if(min > max) { //如果最小索引大於了最大索引,就沒有查詢的可能性了 return -1; //返回-1 } } return mid; } }