二分查詢演算法
阿新 • • 發佈:2018-12-22
1.二分查詢又稱折半查詢,它是一種效率較高的查詢方法。
2.二分查詢要求:(1)必須採用順序儲存結構 (2).必須按關鍵字大小有序排列
3.原理:將陣列分為三部分,依次是中值(所謂的中值就是陣列中間位置的那個值)前,中值,中值後;將要查詢的值和陣列的中值進行比較,若小於中值則在中值前 面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是一個遞迴過程,將前半部分或者後半部分繼續分解為三部分。
迭代:
public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while(left < right){ int mid = left + (right - left) / 2; if(arr[mid] == target){ return mid; }else if(arr[mid] > target){ right = mid - 1; }else{ left = mid + 1; } } return -1; }
遞迴:
public static int binSearch(int arr[], int left, int end, int right) { int mid = (right- left) / 2 + left; if (array[mid] == key) { return mid; } if (left>= right) { return -1; } else if (key > array[mid]) { return binSearch(array, mid + 1, end, right); } else if (key < array[mid]) { return binSearch(array, left, mid - 1, key); } return -1; }