資料結構常用查詢演算法_插值查詢
在考研路_資料結構_查詢1中,我們發現,二分查詢每次都是從中間開始查詢,若我們查詢的關鍵值是靠近上區間或下區間,則二分查詢效率有待提高。
從而我們考慮修改的**為:
mid = (low + high)/2 = low + (high - low)/2;
從而我們引入插值查詢法,針對1/2,我們改為:
(key - a[low])/(a[high] - a[low]);
將1/2改為上述**,使設定的mid值趨向所查詢的關鍵值,將有效的提高查詢的效率。
則mid賦值的**為:
int mid = low + (high - low) * (key - a[low]) / (a[high] - a[low]);
所以插值查詢**如下:
int interpolation_search(int *a, int n, int key)
}
插值查詢其時間複雜度為o(logn),建立在資料排好序,且均勻分布的情況下,其查詢效能較二分查詢好,但是如果資料分布不均勻,如的話,其查詢效果則不理想。
資料結構常用查詢演算法_斐波那契查詢
除了插值查詢法有效提高二分查詢法的效率,斐波那契查詢(fibonacci search),利用**分割原理也可提高查詢效率。
利用斐波那契查詢時,我們先需要有個斐波那契數列的陣列。
斐波那契數列:
斐波那契查詢**如下:
考研 資料結構 查詢演算法
查詢演算法 1.順序查詢 typedef struct sstable intsearch seq sstable s,int k return 1 增加哨兵 intsearch seq 02 sstable s,int k 2.折半查詢 僅適用於有序的順序表 o log2 n 公升序排列 intb...
考研資料結構
一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...
軟考之路 資料結構
官方來說,資料結構是計算機儲存,組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合和該集合中資料元素之間的關係組成。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。data stucture d,r 其中d是資料元素的集合,r是該集合中所有元素之間的關係的有限集...