顺序查找->二分查找->插值查找->斐波那契查找

版权声明:转载请注明出处 https://blog.csdn.net/HeXiQuan123/article/details/85521889

二(等)分查找:分成两份,时间O(log n);mid=(high+low)/2

斐波那契查找:斐波那契查找讲数组补成F[k]长,讲数组分成两部分F[k-1],F[k-2],剩下的就是比大小和换区间

         为什么斐波那契查找可能会优于二(等)分查找?

         个人理解:我们把这两个查找看做二叉树类行为,到叶子则查找成功,对于二等分查找,每一次比较,树的深度+1,对于斐波那契查找,树的深度下降P(mid<F[K-1]-1)*1+P(mid>F[k-1]-1)*2约等于0.618*1+0.382*2>1;

当然,这并不是完全可以比较的数值,毕竟二等分树的深度为log n(以2为底),而斐波那契树的深度为 log n(以1/0.618为底)小于二等分树;

插值查找:把数组估计成线性的,举个栗子:已知排序数组,第1个元素是0.5,第100个元素是50

问你第10个元素是什么?

最合理的方式就是假设为等差数列(线性)然后估值为5;

问10在第几个索引上?

最合理的方式就是估计为20,即检查在不在第二十个位置上;

就引入了比较,if key>||=||<a[20]

这时引入插值公式(这个索引是算出来的)

mid=low+(key-a[low])*(high-low)/(a[high]-a[low])  加黑的单位是 单位索引per值增1

猜你喜欢

转载自blog.csdn.net/HeXiQuan123/article/details/85521889