這兩種查詢方式都是針對於靜態查詢,同時不適用於需要頻繁增刪的陣列,因為維護資料的序會是乙個很大的負擔。同時插值查詢也不適用於分布極端不均勻的陣列
二分/折半查詢
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,說明待...