查詢演算法總結

2021-08-10 01:13:53 字數 1157 閱讀 2118

1.1順序表查詢演算法

在陣列a中檢視有沒有關鍵字(key),從小到大遍歷

int sequential_search(int

*a,int n,int key)

return

0; }

1.2順序表查詢優化

由於順序查詢每次迴圈時,都要判斷i是否越界,所以設定乙個哨兵,解決每次i與n作比較,時間複雜度為o(n)。

/*有哨兵順序查詢*/

int sequential_search(int *a,int n,int key)

return i;

}

2.1二分查詢

前提是線性表中的記錄必須是關鍵碼有序(通常是從小到大)

/*二分查詢*/

int binary_search(int *a,int n,int key)

return 0;

}

2.2 插值查詢

對於表長較長,而關鍵字分布又比較均勻的查詢表來說,插值查詢演算法的平均效能較好。 mi

d=lo

w+hi

gh2=

low+

12(h

igh−

low)

改進方案為:mi

d=lo

w+ke

y−a[

low]

a[hi

gh]−

a[lo

w](h

igh−

low)

所以**第八行更改為

mid = low+(high-low)*(key-a[low])/(a[high]-a[low]);
所以,插值的核心就是插值計算公式:ke

y−a[

low]

a[hi

gh]−

a[lo

w]

2.3 斐波那契查詢

/*斐波那契查詢*/

int fibonacci_search(int *a,int n,int key)

else

if (key>a[mid])

else

} return

0;}

查詢演算法總結

順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...

查詢演算法總結

順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...

查詢演算法總結

一 順序查詢 二 二分查詢 int binarysearchrecursion int arry,int value,int start,int end else int binarysearchrecursion int arry,int len,int value int binarysearc...