斐波那契查詢

2021-06-26 21:33:10 字數 861 閱讀 2098

與二分查詢相比,斐波那契查詢演算法的明顯優點在於它只涉及加法和減法算,而不用除法。因為除法比加減法要占去更多的機時,因此,斐波那契查詢的平均效能要比折半查詢好。  

斐波那契查詢與折半查詢的時間複雜度間同為o(log2(log2n)),平均

情況下,斐波那契查詢優於折半查詢,但最壞情況下則差於折半查詢。斐波那契查詢優點是只有加、減運算。折半查詢有除法運算。缺點是每次必須計算下個級數。

[cpp]view plain

copy

#include 

void

fibonacci(

int*f)  

intfibonacci_search(

int*a,

intkey,

intn)  

else

if(a[mid] < key)  

else

}  return

-1;  

}  int

main()  

;  int

k;  

printf("請輸入要查詢的數字:\n"

);  

scanf("%d"

,&k);  

intpos = fibonacci_search(a,k,13);  

if(pos != -1)  

printf("在陣列的第%d個位置找到元素:%d\n"

,pos + 1,k);  

else

printf("未在陣列中找到元素:%d\n"

,k);  

return

0;  

}  

參考:

斐波那契查詢

斐波那契查詢 斐波那契查詢的核心是 1 當key a mid 時,查詢成功 2 當key 3 當key a mid 時,新的查詢範圍是第mid 1個到第high個,此時範圍個數為f k 2 1個,即陣列右邊的長度,所以要在 f k 2 1 範圍內查詢。與二分查詢相比,斐波那契查詢演算法 的明顯優點在...

斐波那契查詢

基於二分法 此演算法依靠斐波那契數列 來跳轉比較位置 在玩數字板所以有了手寫圖 單步驟原理如下 c語言實現 include include define return fail 1 斐波那契查詢 int fibonaccisearch int src int,int src len,int sear...

斐波那契查詢

實驗資料表明當資料量超過40萬時,斐波那契查詢演算法查詢速度優於二分查詢 原理 與二分查詢相比,斐波那契查詢的明顯優點在於它只涉及加法和減法運算,而不用除法 可能用 1 要好點 因為除法比加減法要占去更多的機時,因此,斐波那契查詢的執行時間比二分查詢短。但是,在命中率方面,二分查詢比斐波那契查詢出色...