折半查找和插值查找
定义
折半查找(Binary Search)定义:又称二分查找,有序的顺序存储线性表(通常从小到大)。
时间复杂度:O(logn);
核心计算公式:mid = low+1/2(high-low);
基本思路:取中间值与给定值进行比较
等于 查找成功(终止);
大于 在左半区继续找;
小于 在右半区继续找;
重复上述过程,直到查找成功,或者查询所有无此记录,查找失败。
插值查找定义:类似折半查找,只是查询比例不同。
时间复杂度:O(logn);
核心计算公式:mid = low+(high-low)*(key-a[low])/(a[high]-a[low]);
对比:这两个方式的查找唯一区别就是 mid 的计算方法。
代码
折半查找代码:
复制代码
插值查找代码:
复制代码
成长快乐!成长快乐!成长快乐!
版权声明: 本文为 InfoQ 作者【ilovealt】的原创文章。
原文链接:【http://xie.infoq.cn/article/6350303f51d409297b0b82e7e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论