说明

如果却搜寻的资料分布平均的话,可以使用插补(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语言算法- 插补搜寻法相关推荐

  1. 插补c语言程序,逐点比较法插补C语言程序

    <逐点比较法插补C语言程序>由会员分享,可在线阅读,更多相关<逐点比较法插补C语言程序(6页珍藏版)>请在人人文库网上搜索. 1.该函数在VC+6.0下编译测试通过,可实现直线 ...

  2. 数字积分法插补c语言程序,数字积分法插补原理

    <数字积分法插补原理>由会员分享,可在线阅读,更多相关<数字积分法插补原理(19页珍藏版)>请在人人文库网上搜索. 1.3单元 数字积分法插补原理,掌握数字积分法插补基本原理 ...

  3. 数字积分法直线插补c语言程序,数控课程设计(数字积分法第二象限直线插补程序).docx...

    数字积分法第二象限直线插补程序设计 数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具 沿着所加工的轮廓曲线运动 利用数字 积分原 理构成的插 补装置 称为数字积分 器,又称数 字微分 ...

  4. 单链表的头插法和尾插法c语言实现

    /*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...

  5. 广技师17专插本c语言答案,广东技术师范学院2017年专插本C语言程序设计(1)

    1.广东技术师范学院2017 年专插本 C语言程序设计注意:请将答案写在答题纸上,否则无效!一.判断题: (12 分每题 2 分)1. C 语言规定 :在一个源程序中 ,main 函数的位置必须在最开 ...

  6. 固高GTS运动控制卡,C#语言三轴点胶机样本程序源代码,使用 的是固高GTS-800 8轴运动控制卡

    固高GTS运动控制卡,C#语言三轴点胶机样本程序源代码,使用 的是固高GTS-800 8轴运动控制卡. 资料齐全,3轴点胶机样本程序,还有操作手册及各种C#事例程序,适合自己参照做二次开发,GTS-4 ...

  7. R语言Y轴坐标的数字如何水平放置?

    R语言Y轴坐标的数字如何水平放置? 目录 R语言Y轴坐标的数字如何水平放置? R语言是解决什么问题的? R语言Y轴坐标的数字如何水平放置? R语言是解决什么问题的? R 是一个有着统计分析功能及强大作 ...

  8. 欧姆龙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 ...

  9. 广技师17专插本c语言答案,广东技术师范学院2017年专插本C语言程序设计-(1).doc...

    广东技术师范学院2017年专插本C语言程序设计 注意:请将答案写在答题纸上,否则无效!!! 一.判断题:(12分 每题2分) 1.C语言规定:在一个源程序中,main函数的位置必须在最开始. 2.假设 ...

  10. c语言怎样在不足n位数的整数前补0,C# String 前面不足位数补零的方法

    int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString().PadLef ...

最新文章

  1. eclipse中导入web项目详细配置
  2. 【UVA624 01背包中的路径问题】
  3. 【转】用nohup命令让Linux下程序永远在后台执行
  4. leetcode 877. Stone Game | 877. 石子游戏(递归/动态规划/数学解法)
  5. 这位教授2 年一篇 Science,再获教科书级的重大发现
  6. Python 攻克移动开发失败!
  7. MarkDown常用语法及word转MarkDown
  8. 刘意JavaSE 学习笔记 Day12-Day14——字符串API(String/StringBuffer/StringBuilder...)
  9. SMT工艺培训一日谈
  10. 推荐几个高质量的软件测试实战项目
  11. obs studio 开源直播软件 简介
  12. 牛顿迭代公式(详细)
  13. html可以转换wps嘛,如何将图文并茂的网页快速转换为WPS或word文档
  14. 简单易懂读《重构》 - Refused Bequest (拒绝继承的遗赠)
  15. Jupyter notebook 绘图时,如何生成高清图片?
  16. 计算机网络access code,access code
  17. mysql 生成序号 且自增
  18. Facade 门面 —— Mediator 调停者
  19. MSE 均方误差及其梯度
  20. document.onreadystatechange的认识

热门文章

  1. 主板、内存条、硬盘、显卡认识和选购
  2. Android5.0直播不了,Android 5.0打开直播页面直接闪退
  3. 运维工程师是桥的护栏_运维工程师职务说明书
  4. jmeter无法启动,jmeter启动后找不到java环境问题
  5. 南银法巴消费金融完成增资,苏宁清仓出局
  6. 弱口令漏洞与验证码绕过——渗透day04
  7. 让老照片重现光彩:Bringing Old Photos Back to Life(实战)
  8. Go:包管理工具GOPATH、vendor、dep 、go module
  9. 使用CSS Flexbox 构建可靠实用的网站 Header
  10. win10高危服务_Win10有哪些可以安全禁用的服务?Win10安全禁用服务