折半查詢法也叫做二分查詢,顧名思義,就是把資料分成兩半,再判斷所查詢的key在哪一半中,再重複上述步驟知道找到目標key;
注意:(咳咳,敲黑板)折半查詢法僅適用於對已有順序的陣列、資料進行操作!!!
很顯然,折半查詢法相對於其他查詢方法例如順序查詢法效率要高很多;
下面我們來實際操作一下,了解二分查詢的奧義。
例如:要在陣列arr=;中查詢key=7的位置;首先,我們要先將陣列arr中的資料成員進行排序。arr=;
如圖所示:將該組資料小端記作low,大端記作high,中間值記作mid;
二分法查詢時,將所查詢的key與mid比較,例如key=7,即可縮小查詢範圍在mid和high之間;
如圖所示即可找到key=low=7;
注意:(敲黑板)如果中間數mid不是整數,需要進行取整。
**如下:
#include
using
namespace std;
intbinsearch
(int arr,
int len,
int key)
return-1
;//如果陣列中無目標值key,則返回-1;
折半查詢 java實現
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。author administrator public cl...
折半查詢演算法實現
折半查詢是一種比較高效的查詢方式,其基本思想是 在某個有序表中,取出中間的記錄作為比較物件,如果要查詢記錄的關鍵碼等於中間記錄的關鍵碼,則查詢成功 若要查詢記錄的關鍵碼小於中間記錄的關鍵碼,則在中間記錄的左半區繼續查詢 若查詢記錄的關鍵碼大於中間記錄的關鍵碼,則在中間記錄的右半區繼續查詢。不斷重複上...
C語言實現 折半查詢演算法
什麼叫折半?就是用已知的數與乙個有序數列序列號最中間的數相比較,縮小查詢範圍。先寫查詢函式binsearch,三次判斷。然後主函式呼叫。includeint binsearch int a,int x,int len if x a mid x a mid 時,右邊界變為中間下標 1 if x a m...