理論基礎 查詢 斐波那契查詢

2021-08-19 13:36:27 字數 628 閱讀 4874

斐波那契查詢,其利用了**分割原理來對二分查詢進行了改進。

**分割又稱**比例,是指事物各部分間一定的數學比例關係,即將整體一分為二,較大部分與較小部分之比等於整體與較大部分之比,其比值約為 1:0.618 或 1.618:1,**比例不僅在繪畫、藝術上有著重要的審美價值,在工程上也具有極大的作用。

在二分查詢中,每次查詢都是將查詢表一分為二,無論資料是偏大還是偏小,很多時候都未必是最合適的做法,而對於斐波那契數列,其從第三個數開始,前後兩個數的比值會越來越接近 0.618,利用這個特性,可對二分查詢進行改進。

斐波那契查詢中,首先根據查詢表的長度 n 來計算 n 位於斐波那契數列的位置 k,然後根據 f[k] 來將查詢表中不滿的數值補全,再利用位置 k 來計算查詢點 mid

即:mid=low+f[k-1]-1

此後,將 a[mid] 與 key 值進行比較,根據比較結果來調整查詢區間:

int f[n];

void fibonacci()

else

} return -1;//查詢失敗

}

查詢 斐波那契查詢

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 平均 情況下,斐波那契查詢優於折半查詢,但最壞情況下則差於折半查詢。斐波...