对于折半查找与插值查找,二者孰优孰劣,已经在该有序表查询的系列一种进行了阐述,二者可谓打个平手不分伯仲。
在回到斐波那契与折半查找二者身上,平均来说,斐波那契由于折半,但是必须考虑极端情况,也就是当要查找的值为数组下标起始或者结束位置时,斐波那契反而略输折半一筹,这也是能预见的结果。
那么对于这三者孰优孰劣的比较的说法措辞可谓仁者见仁智者见智你说你有理我说我有据了。但有一点,归根结底还是要回归到四则运算性能差异上面来考量,这也是最容易分出高下排个名次的依据。是骡子是马拉出来溜溜看看,折半算法有除法和加法,插值算法有加减乘除样样都有(齐活儿),斐波那契只有加减,在数据量不大的时候三者在加减乘除四则运算性能上相差细微,但在洋量数据中进行查找,再细微的差距也会被放大好多倍。
所以,到这里我们也能得出结论:三种查找方式各有优劣,其本质上是查询前就行分割点的位置选择的差异,折半取中间,插值取头或取尾(有时头与尾反而是中间),斐波那契取黄金分割点。到这里,也是黔驴技穷无话可说了,主要还是尝试着在实际运用中根据需要做出合适的选择,一遍不成三遍打磨。