插值查詢事實上是一種二分查詢的一種改進。陣列中元素不能有重複。
當陣列中的資料分布極度不均與時,如{0,1,2,2000,2001,…,99998}.如果用二分查詢,那麼查詢的次數會很多。而插值查詢就適合這種極端不均勻的資料。
即兩種演算法的區別只有在計算mid時的係數不同
插值查詢
二分查詢
mid的係數為(num - arr[start])/(arr[end] - arr[start])
mid的係數為1/2
注:陣列中元素不能有重複。
public static int binarysearch(int arr,int num)else if(num < arr[mid])else if(num > arr[mid])
}return -1;
}
資料結構學習筆記 2 資料結構與演算法
四.演算法設計的要求 五.演算法效率的度量方法 六.函式的漸近增長 七.演算法時間複雜度 八.常見的時間複雜度 九.最壞情況與平均情況 十.演算法空間複雜度 資料結構是底層,演算法高層。資料結構為演算法提供服務。演算法圍繞資料結構操作。演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序...
資料結構筆記8串(《大話資料結構》學習筆記)
串 string 是由零個或多個字元組成的有限序列,又名叫字串。一般記為 s a1a2 an n 0 其中,s 是串的名稱,用雙引號 有些書中也用單引號 括起來的字串行是串的值,注意單引號不屬於串的內容 ai可以是字母 數字或其他字元 i 就是該字元在串中的位置。串中的字元數目 n 稱為串的長度,定...
演算法與資料結構學習筆記(7) 有序表查詢之二分查詢
1 使用前提 線性表中的記錄必須是有序的 通常是從小到大 線性表必須採用順序儲存。2 演算法思路 在有序表中,取中間值作為比較物件,若給定值與中間記錄的值相等,則查詢成功 若小於中間記錄的值,則在中間記錄的左半區繼續查詢 若大於中間記錄的值,則在中間記錄的右半區繼續查詢。不斷重複上述過程即可。3 演...