怎么在PHP中实现一个插值查找算法-创新互联

本篇文章给大家分享的是有关怎么在PHP中实现一个插值查找算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联公司10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对成都岗亭等多个领域拥有多年的网站营销经验的网站建设公司。

基本思想:


根据要查找的关键字key与查找表中的较大最小记录的关键字比较后的查找方法,其核心就在于插值计算公式,我们先看折半查找的计算公式:

 怎么在PHP中实现一个插值查找算法

而插值查找就是要将其中的 1/2进行改进,改成下面的计算方案:

 怎么在PHP中实现一个插值查找算法

插值查找算法的核心就在于插值的计算公式:

$num - $arr[$lower]
—————————————
$arr[$high] - $arr[$lower]

代码:

 $arr[$middle]){
   $lower = $middle + 1;
  }else{
   return $middle;
  }
 }
 return -1;
}
$arr = array(0,1,16,24,35,47,59,62,73,88,99);
$pos = insertsearch($arr,62);
print($pos);
echo "
"; echo $i;

总结:

从时间复杂度上来看,它也是 O(logn),但对于有序表比较长,而关键字分布有比较均匀的查找表来说,插值查找算法的平均性能比二分查找好的多。反之,数组中如果分布类似于{0,1,2,2000,2001,。。。999998,999999}这种极端不均匀的数据,用插值查找未必是很合适的选择。

我自己特别做了个例子:

$arr = array(0,1,2,2000,2001,2002,2003,2004,5555,69666,99999,100000);
echo "位置:".binsearch($arr,5555);
echo "
"; echo "比较次数:".$i; $i = 0; //重置比较次数 echo "
"; echo "位置:".insertsearch($arr,5555); echo "
"; echo "比较次数:".$i;

结果输出:

位置:8
比较次数:2
位置:8
比较次数:9

以上就是怎么在PHP中实现一个插值查找算法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


当前题目:怎么在PHP中实现一个插值查找算法-创新互联
URL标题:http://bzwzjz.com/article/eipes.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 网站建设 网站设计公司 重庆手机网站建设 营销型网站建设 网站设计 阿坝网站设计 网站建设费用 盐亭网站设计 成都商城网站制作 广安网站设计 成都网站建设 成都网站制作 成都网站制作 成都企业网站建设公司 上市集团网站建设 高端网站设计 定制网站建设多少钱 网站建设改版 温江网站设计 成都h5网站建设 高端品牌网站建设