查找算法 - 折半查找(又稱二分查找)
阿新 • • 發佈:2018-06-23
source arch 缺點 頻繁 span return 順序 代碼實現 困難
簡介
折半查找(Binary Search),又稱為二分查找。前提是線性表中的記錄必須是 關鍵碼有序,線性表必須采用 順序存儲。
基本思想
在有序表中,取中間記錄作為比較對象,若給定值與中間記錄的關鍵字相等,則查找成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查找;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查找。不斷重復上述過程,直到查找成功,或所有查找區域無記錄,查找失敗為止。
優缺點
優點
折半查找,優點是比較次數少,查找速度快,平均性能好;
缺點
要求待查表為有序表,且插入、刪除困難。因此,折半查找方法適用於不經常變動而查找頻繁的有序列表。
代碼實現
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
}
查找算法 - 折半查找(又稱二分查找)