二分法(折半法)查詢資料的乙個簡單例子

2021-06-07 06:16:58 字數 509 閱讀 3651

提醒一下,該詞條中的c**混雜了c++,不過如果你也學過c++,看懂應該沒有問題。

以下是我的**:

#includeint search_bin(int array,int length,int key)

{//要求array為公升序序列,若為降序序列,需要稍作修改

//引數說明,array為查詢陣列,length為陣列長度(即陣列元素個數),key為查詢的關鍵字

//查詢成功時返回陣列下標,查詢失敗時返回-1

int left=0; //注意,c/c++中陣列下標從0開始

int right=length-1;

int mid;

while(left<=right)

{ mid=left+(right-left)/2; //此處若用(left+right)/2可能會出現溢位,導致結果不正確

if(array[mid]==key)

return mid; //查詢成功,返回

else if(key

折半查詢法 二分法

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

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

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

二分法查詢(折半查詢)

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