1. 程式人生 > >查找算法 - 折半查找(又稱二分查找)

查找算法 - 折半查找(又稱二分查找)

source arch 缺點 頻繁 span return 順序 代碼實現 困難

簡介

折半查找(Binary Search),又稱為二分查找。前提是線性表中的記錄必須是 關鍵碼有序,線性表必須采用 順序存儲

基本思想

在有序表中,取中間記錄作為比較對象,若給定值與中間記錄的關鍵字相等,則查找成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查找;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查找。不斷重復上述過程,直到查找成功,或所有查找區域無記錄,查找失敗為止。

優缺點

  1. 優點

    折半查找,優點是比較次數少,查找速度快,平均性能好;

  2. 缺點

    要求待查表為有序表,且插入、刪除困難。因此,折半查找方法適用於不經常變動而查找頻繁的有序列表。

代碼實現

public
int Binary_Search(int[] arr, int key) { int low = 0; int high = arr.length - 1; int mid; while (low <= high) { mid = (low + high) / 2; if (key < arr[mid]) { high = mid - 1; } else if (key > arr[mid]) { low = mid + 1
; } else { return mid; } } return -1; // 表中不存在 key }

查找算法 - 折半查找(又稱二分查找)