C语言多轴插补,C语言算法- 插补搜寻法
说明
如果却搜寻的资料分布平均的话,可以使用插补(Interpolation)搜寻法来进行搜寻,在搜寻
的对象大于500时,插补搜寻法会比二分搜寻法来的快速。
解法
插补搜寻法是以资料分布的近似直线来作比例运算,以求出中间的索引并进行资料比对,如果
取出的值小于要寻找的值,则提高下界,如果取出的值大于要寻找的值,则降低下界,如此不
断的减少搜寻的范围,所以其本原则与二分搜寻法是相同的,至于中间值的寻找是透过比例运
算,如下所示,其中K是指定要寻找的对象, 而m则是可能的索引值
#include
#include
#include
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
void quicksort(int[], int, int);
int intsrch(int[], int);
int main(void)
{
int number[MAX] =
{
0
};
int i, find;
srand(time(NULL));
for (i = 0; i < MAX; i++)
{
number[i] = rand() % 100;
}
quicksort(number, 0, MAX - 1);
printf("数列:");
for (i = 0; i < MAX; i++)
printf("%d ", number[i]);
printf("\n输入寻找对象:");
scanf("%d", &find);
if ((i = intsrch(number, find)) >= 0)
printf("找到数字于索引%d ", i);
else
printf("\n找不到指定数");
printf("\n");
return 0;
}
int intsrch(int number[], int find)
{
int low, mid, upper;
low = 0;
upper = MAX - 1;
while (low <= upper)
{
mid = (upper - low) *(find - number[low]) / (number[upper] - number[low]) +
low;
if (mid < low || mid > upper)
return - 1;
if (find < number[mid])
upper = mid - 1;
else if (find > number[mid])
low = mid + 1;
else
return mid;
}
return - 1;
}
void quicksort(int number[], int left, int right)
{
int i, j, k, s;
if (left < right)
{
s = number[(left + right) / 2];
i = left - 1;
j = right + 1;
while (1)
{
while (number[++i] < s)
;
// 向右找
while (number[--j] > s)
;
// 向左找
if (i >= j)
break;
SWAP(number[i], number[j]);
}
quicksort(number, left, i - 1); // 对左边进行递回
quicksort(number, j + 1, right); // 对右边进行递回
}
}
C语言多轴插补,C语言算法- 插补搜寻法相关推荐
- 插补c语言程序,逐点比较法插补C语言程序
<逐点比较法插补C语言程序>由会员分享,可在线阅读,更多相关<逐点比较法插补C语言程序(6页珍藏版)>请在人人文库网上搜索. 1.该函数在VC+6.0下编译测试通过,可实现直线 ...
- 数字积分法插补c语言程序,数字积分法插补原理
<数字积分法插补原理>由会员分享,可在线阅读,更多相关<数字积分法插补原理(19页珍藏版)>请在人人文库网上搜索. 1.3单元 数字积分法插补原理,掌握数字积分法插补基本原理 ...
- 数字积分法直线插补c语言程序,数控课程设计(数字积分法第二象限直线插补程序).docx...
数字积分法第二象限直线插补程序设计 数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具 沿着所加工的轮廓曲线运动 利用数字 积分原 理构成的插 补装置 称为数字积分 器,又称数 字微分 ...
- 单链表的头插法和尾插法c语言实现
/*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...
- 广技师17专插本c语言答案,广东技术师范学院2017年专插本C语言程序设计(1)
1.广东技术师范学院2017 年专插本 C语言程序设计注意:请将答案写在答题纸上,否则无效!一.判断题: (12 分每题 2 分)1. C 语言规定 :在一个源程序中 ,main 函数的位置必须在最开 ...
- 固高GTS运动控制卡,C#语言三轴点胶机样本程序源代码,使用 的是固高GTS-800 8轴运动控制卡
固高GTS运动控制卡,C#语言三轴点胶机样本程序源代码,使用 的是固高GTS-800 8轴运动控制卡. 资料齐全,3轴点胶机样本程序,还有操作手册及各种C#事例程序,适合自己参照做二次开发,GTS-4 ...
- R语言Y轴坐标的数字如何水平放置?
R语言Y轴坐标的数字如何水平放置? 目录 R语言Y轴坐标的数字如何水平放置? R语言是解决什么问题的? R语言Y轴坐标的数字如何水平放置? R语言是解决什么问题的? R 是一个有着统计分析功能及强大作 ...
- 欧姆龙PLC ST语言6轴伺服RS232C通讯板CP1W-C IF0 真实项目程序,ST语言写的FB块
欧姆龙PLC ST语言6轴伺服RS232C通讯板CP1W-C IF0 真实项目程序,ST语言写的FB块 PLC用是两台CP1H-X40DT-D配置4块RS232C通讯板CP1W-CIF01 触摸屏是N ...
- 广技师17专插本c语言答案,广东技术师范学院2017年专插本C语言程序设计-(1).doc...
广东技术师范学院2017年专插本C语言程序设计 注意:请将答案写在答题纸上,否则无效!!! 一.判断题:(12分 每题2分) 1.C语言规定:在一个源程序中,main函数的位置必须在最开始. 2.假设 ...
- c语言怎样在不足n位数的整数前补0,C# String 前面不足位数补零的方法
int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString().PadLef ...
最新文章
- eclipse中导入web项目详细配置
- 【UVA624 01背包中的路径问题】
- 【转】用nohup命令让Linux下程序永远在后台执行
- leetcode 877. Stone Game | 877. 石子游戏(递归/动态规划/数学解法)
- 这位教授2 年一篇 Science,再获教科书级的重大发现
- Python 攻克移动开发失败!
- MarkDown常用语法及word转MarkDown
- 刘意JavaSE 学习笔记 Day12-Day14——字符串API(String/StringBuffer/StringBuilder...)
- SMT工艺培训一日谈
- 推荐几个高质量的软件测试实战项目
- obs studio 开源直播软件 简介
- 牛顿迭代公式(详细)
- html可以转换wps嘛,如何将图文并茂的网页快速转换为WPS或word文档
- 简单易懂读《重构》 - Refused Bequest (拒绝继承的遗赠)
- Jupyter notebook 绘图时,如何生成高清图片?
- 计算机网络access code,access code
- mysql 生成序号 且自增
- Facade 门面 —— Mediator 调停者
- MSE 均方误差及其梯度
- document.onreadystatechange的认识
热门文章
- 主板、内存条、硬盘、显卡认识和选购
- Android5.0直播不了,Android 5.0打开直播页面直接闪退
- 运维工程师是桥的护栏_运维工程师职务说明书
- jmeter无法启动,jmeter启动后找不到java环境问题
- 南银法巴消费金融完成增资,苏宁清仓出局
- 弱口令漏洞与验证码绕过——渗透day04
- 让老照片重现光彩:Bringing Old Photos Back to Life(实战)
- Go:包管理工具GOPATH、vendor、dep 、go module
- 使用CSS Flexbox 构建可靠实用的网站 Header
- win10高危服务_Win10有哪些可以安全禁用的服务?Win10安全禁用服务