【基本思想是】:首先,將表中間位置記錄的關鍵字與尋找關鍵字比較,如果兩者相等,則尋找成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於尋找關鍵字,則進一步尋找前一子表,否則進一步尋找後一子表。重複以上過程,直到找到滿足條件的記錄,使尋找成功,或直到子表不存在為止,此時尋找不成功。
【演算法複雜度】:假設其數組長度為n,其演算法複雜度為o(log(n))
【二分尋找要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。
【優點】折半尋找法的優點是比較次數少,尋找速度快,平均效能好;
【缺點】要求待查表為有序表,且插入刪除困難。因此,折半尋找方法適用於不經常變動而尋找頻繁的有序列表。
實現代碼:
public class BinarySearch {public static void main(String[] args) {int[] array = { 2, 3, 5, 7, 8,9 };int result = binarySearch(array, 3);if (result != -1)System.out.println("已經在數組中找到,索引位置為:" + result);elseSystem.out.println("沒有此原始");}public static int binarySearch(int[] list, int key) {// 最低線int low = 0;// 最高線int high = list.length - 1;while (low <= high) {// 取中間值int middle = (low + high) / 2;if (list[middle] == key) {return middle;} else if (list[middle] > key) {// 下降一半high = middle - 1;} else {// 上升一半low = middle + 1;}}// 未找到return -1;}}運行結果:已經在數組中找到,索引位置為:1