查詢演算法 二分(折半)查詢

2021-08-19 10:14:49 字數 976 閱讀 1297

基本思想:

//待查記錄的順序為從小到大

首先將待查元素的關鍵字(key)值與待查記錄中間位置上上(下標為mid)記錄的關鍵字進行比較,若相等,則查詢成功

若 key>r(mid).key,則說明待查記錄只可能在後半部分[mid+1,n-1]中,下一步應在後半部分中查詢

若key< timid). key,說明待查記錄只可能在前半部分[0,mid-1]中,下一步應在r的前半個部分中查詢

重複上述步驟,逐步縮小範圍,直到查詢成功或待查記錄為空失敗時為止。

注意:中間值位置求出若為小數,應向下整,即4.5=4,非四捨五入;中間值己經比較過不相等,在劃分下一次比較區間時,無需將中間值位置再納入下一次比較區間;待查記錄必須已排好序

時間複雜度為o(log2n)

#define n 10

//對順序為從小到大的陣列進行折半查詢 

int arr = ;//待查詢陣列 

int low = 0;//陣列下標最小 

int high = n-1;//陣列下標最大 

int key = 0;//帶查詢元素 

int mid;//中間變數 

while(low <= high)

else if(key == arr[mid] )

else   

}printf("未查找到");  

#define n 10

//對順序為從大到小的陣列進行折半查詢 

int arr[n] = ;//待查詢陣列 

int low = 0;//陣列下標最小 

int high = n-1;//陣列下標最大 

int key = 0;//帶查詢元素 

int mid;//中間變數 

while(mid = (low + high)/2 )

else if(key == arr[mid] )

else       

}printf("未查找到"); 

二分(折半)查詢演算法

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。折半查詢的演算法思想是將數列按有序化 遞增或遞減 排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。折半查詢是一種高效...

二分 折半 查詢

折半查詢 又叫二分查詢,採用分治思想,適用於不經常變動且查詢頻繁的表 演算法思想 將n個元素 假設n個元素公升序 分為大致相同的兩部分,取data n 2 與目標元素m比較 若data n 2 m return n 2 若data n 2 m 則我們只要在data的左半部分繼續查詢 若data n ...

二分 折半 查詢

二分查詢 請對乙個有序陣列進行二分查詢 輸入乙個數看看該陣列是否存在此數,並且求出下 標,如果沒有就提示 沒有這個數 二分查詢演算法的思路 二分 折半 查詢條件 有序陣列。public class binarysearch 不考慮有重複元素的查詢。int index solutionsearch a...