(1 3 2 2)查詢 斐波那契查詢

2021-06-29 04:00:53 字數 851 閱讀 1385

原理:利用斐波那契數列的性質,**分割的原理來確定mid的位置。

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

斐波那契查詢的核心是:

1)當key=a[mid]時,查詢成功;

2)當key< a[mid]時,新的查詢範圍是第low個到第mid-1個,此時範圍個數為f[k-1] - 1個,即陣列左邊的長度,所以要在[low, f[k - 1] - 1]範圍內查詢;

3)當key> a[mid]時,新的查詢範圍是第mid+1個到第high個,此時範圍個數為f[k-2] - 1個,即陣列右邊的長度,所以要在[f[k - 2] - 1]範圍內查詢。

#include 

void fibonacci(int

*f)int fibonacci_search(int

*a,int key,int n)

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 1 2 3 5 8 13 21 斐波那契數列又被成為 分割數列,因為前一項 後一項越來越趨近於0.618由上面的數列,可以發現 除了前兩項,後面每一項都是前兩項的和,如3 5 8 8 13 21.由此可以得到一下等式 f n f n 1 f n 2 除了前兩項 斐波那契查詢原理與前兩種相似,僅僅...

斐波那契查詢

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

斐波那契查詢

與二分查詢相比,斐波那契查詢演算法的明顯優點在於它只涉及加法和減法運算,而不用除法。因為除法比加減法要占去更多的機時,因此,斐波那契查詢的平均效能要比折半查詢好。斐波那契查詢與折半查詢的時間複雜度間同為o log2 log2n 平均 情況下,斐波那契查詢優於折半查詢,但最壞情況下則差於折半查詢。斐波...