插值查詢(改進版的二分 折半查詢)

2021-10-03 02:43:05 字數 757 閱讀 7687

這兩種查詢方式都是針對於靜態查詢,同時不適用於需要頻繁增刪的陣列,因為維護資料的序會是乙個很大的負擔。同時插值查詢也不適用於分布極端不均勻的陣列

二分/折半查詢

int

binary_search

(int

*a,int n,

int key)

return0;

}

我們發現折半查詢雖然可以減輕順序查詢的工作量, 但我們沒有必要每一次都從一半的位置進行查詢,因此我們可以對其進行改進。

int

interpolation_search

(int

*a,int n,

int key)

return0;

}

我們對mid的求值進行了改進, 即:

m id

=low

+key

−a[l

ow]a

[hig

h]−a

[low

]×(h

igh−

low)

mid = low+\frac \times(high-low)

mid=lo

w+a[

high

]−a[

low]

key−

a[lo

w]​×

(hig

h−lo

w)

二分 折半 查詢

折半查詢 又叫二分查詢,採用分治思想,適用於不經常變動且查詢頻繁的表 演算法思想 將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...

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

基本思想 待查記錄的順序為從小到大 首先將待查元素的關鍵字 key 值與待查記錄中間位置上上 下標為mid 記錄的關鍵字進行比較,若相等,則查詢成功 若 key r mid key,則說明待查記錄只可能在後半部分 mid 1,n 1 中,下一步應在後半部分中查詢 若key timid key,說明待...