插值查找算法介绍

插值查找(Interpolation Search)是根据要查找关键字key与查找表中最大最小记录的关键字比较后的查找方法,其核心就在于插值的计算公式key-arr[low]/arr[high]-arr[low]细看是不是key在整序列中的占比哟。所以mid的计算公式为:

(high-low)*(key-arr[low])/(arr[high]-arr[low])。对比折半查找的mid = (high-low)/2

代码和折半查找一模一样,唯独mid的计算方式发生改变。这样的好处在于,对表长较长,且关键字分分布比较均匀,插值查找算法的平均性能要比折半查找要好的多。但是 如果表中 关键字分布极端不均匀 那么插值查找还不如折半查找呢。

插值查找算法代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//插值查找法 arr数组,length 数组长度,key 查找的关键字
//返回查找值的下标 ,没查找到 返回-1
int Interpolation_Search(int *arr, int length, int key)
{int low = 0;//低位下标int high = length-1;//高位下标int mid;//中间值下标while (low <= high){mid = (high-low)*(key - arr[low]) / (arr[high] - arr[low]);//插值if (key < arr[mid]){high = mid - 1;}else if(key > arr[mid]){low = mid + 1;}else{return mid;}}return -1;
}
int main(int argc, char *argv[])
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9};int index1 = Interpolation_Search(arr, 10, 5);int index2 = Interpolation_Search(arr, 10, 100);printf("index1 = %d,index2 = %d\n",index1,index2);return 0;
}

代码运行检测

查找算法:插值查找算法实现及分析相关推荐

  1. 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找

    第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...

  2. 数据结构与算法-查找算法(二分查找,插值查找,斐波那契(黄金分割法)查找)

    查找算法 以下三种算法的基本思想相同,都是利用递归来寻找 二分查找 思路分析 1.首先确定该数组的中间下标,min = (left + right) / 2 2.然后让需要查找的的数findVal和a ...

  3. 数据结构三大查找算法(二分查找、插值查找、斐波那契数列查找)C语言实现

    文章目录 查找 二分查找(折半查找) 插值查找 斐波拉契查找 总结: 查找 查找是在大量的信息里面寻找一个特定的信息元素 (1)静态查找和动态查找: 静态或者动态都是针对查找表而言的.动态表指查找表中 ...

  4. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  5. 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)

    1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...

  6. 数据结构与算法 | 插值查找

    折半查找法:https://blog.csdn.net/qq_35423154/article/details/101383518 当我们在使用折半查找法的时候,都会有个疑问,为什么一定要用折半,为什 ...

  7. 查找(顺序查找、二分查找、插值查找)

    查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找表分类:静态查找表和动态查找表. 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删 ...

  8. 算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)

    转载 BinarySearch.java /*** @ClassName BinarySearch* @Description 折半查找** 可以使用插值公式将折半查找性能优化** 只需将其中的 mi ...

  9. 【数据结构与算法】比较法分析查找算法与查找结构

    基本的查找技术: 线性表的查找技术 顺序查找 分块查找 二分查找(折半查找) 插值查找 树表的查找技术 二叉排序树 平衡二叉树 B树(B+树.B-树等) 散列表的查找技术 开散列表 闭散列表 顺序查找 ...

  10. (二)Java算法:插值查找

    目录 一.简介 1.1.特点 二.maven依赖 三.实现 3.1.代码实现 3.2.数据流向过程 3.3.数据查找流程 结语 一.简介 1.1.特点   插值查找,有序表的一种查找方式.插值查找是根 ...

最新文章

  1. JS自动插入分号机制ASI
  2. 对抗神经网络GAN到底学到了什么
  3. 一种形式的两个提交按钮
  4. 优胜教育暴雷之后,线下一对一还是门好生意吗?
  5. Python 中print 和return 的区别
  6. vb整合多个excel表格到一张_[Excel]同一工作簿中多个工作表保存成独立的表格
  7. phpcmsV9 关于phpcms根目录下ico图标,改了没效果的解决办法?
  8. [AHOI2004]数字迷阵 结论+矩乘
  9. 游戏引擎中的通用编程技术
  10. 江西职业教育集团计算机应用竞赛,【喜报】江西工业职院电子与信息工程学院学生在计算机应用竞赛钟喜获佳绩...
  11. IDEA build时出现Artifact contains illegal characters的解决
  12. 我们在 web 应用开发过程中经常遇到输出某种编码的字 符, 如 iso8859-1 等, 如何输出一个某种编码的字符串?...
  13. 计算机图形学完整笔记(四):消隐
  14. 怎么开启远程重启服务器,怎么正确重启服务器
  15. 集群通信组件Tribes之整体介绍
  16. ①测定预测精度的方法【误差】—②组合模型【线性组合模型+最优线性组合模型+贝叶斯组合模型】
  17. html css ps切图教程,CSS切图学习之认识PHOTOSHOP(PS)
  18. CIO谈:基于K2 BPM平台怎么做报销?
  19. 磁盘阵列 vga_什么是VGA(视频图形阵列)?
  20. 浅谈爬虫工作中HTTPIP的重要性

热门文章

  1. 计算机教育部学科评估2019,2019教育部8大学科评估公示名单,学科实力一眼较高低!...
  2. anjular.js表单验证实例
  3. php网站跨站脚本监测,基于PHP的在线跨站脚本检测工具.pdf
  4. echo添加换行 linux_在 Linux 上创建文件的 10 个方法
  5. 【ES6(2015)】Reflect
  6. layui左侧三级菜单2.0
  7. BootStrap笔记-popover的使用(popover中放验证码,点击更新)
  8. C++笔记-VS2015加载Live2D(OpenGL)
  9. Qt工作笔记-让界面飞一会(让界面旋转出来)
  10. Qt工作笔记-QSS中关于QCombox的设置