C語言中折半查詢法(二分法)的實現

2021-09-14 05:22:44 字數 1046 閱讀 5542

折半查詢法也叫做二分查詢,顧名思義,就是把資料分成兩半,再判斷所查詢的key在哪一半中,再重複上述步驟知道找到目標key;

注意:(咳咳,敲黑板)折半查詢法僅適用於對已有順序的陣列、資料進行操作!!!

很顯然,折半查詢法相對於其他查詢方法例如順序查詢法效率要高很多;

下面我們來實際操作一下,了解二分查詢的奧義。

例如:要在陣列arr=;中查詢key=7的位置;首先,我們要先將陣列arr中的資料成員進行排序。arr=;

如圖所示:將該組資料小端記作low,大端記作high,中間值記作mid;

二分法查詢時,將所查詢的key與mid比較,例如key=7,即可縮小查詢範圍在mid和high之間;

如圖所示即可找到key=low=7;

注意:(敲黑板)如果中間數mid不是整數,需要進行取整。

#include

intbinsearch

(int arr,

int len,

int key)

//折半查詢法(二分法)

return-1

;//如果陣列中無目標值key,則返回 -1 ;

}int

main()

;//首先要對陣列arr進行排序

希望對您有所幫助!

折半查詢法 二分法

在有序 設為公升序 表中,取中間元素作為比較物件,若給定值與中間元素的關鍵字相等,則查詢成功 若給定值小於中間元素的關鍵字,則在中間元素的左半區繼續查詢 若給定值大於中間元素的關鍵字,則在中間元素的右半區繼續查詢。不斷重複上述查詢過程,直到查詢成功,或所查詢的區域無該資料元素,查詢失敗。測試資料 1...

查詢 二分法查詢 折半查詢法

實現查詢指定數值在元素有序的陣列中儲存的位置 索引 返回該位置 索引 解題步驟 1.定義3個用來記錄索引值的變數,變數min記錄當前範圍最小索引值,初始值為0 變數max記錄當前範圍最大索引值,初始值為陣列長度 1 變數mid記錄當前當前範圍最中間元素的索引值,初始值為 min max 2 2.使用...

二分法查詢(折半查詢)

一 二分法查詢思想 首先從陣列的中間mid開始查詢,如果剛好等於要查詢的值,則返回這個數字的所在位置。如果要查詢的數字比mid值小,則讓mid 1,做為陣列的右邊界,重複 1 操做 如果要查詢的數字比mid大,則讓mid 1做為陣列的左邊界,重複 1 操作。如果left right時,還沒有找到該數...