设置监视哨算法的实现也算是相当简单,和顺序查找的思路一样,但把查找数组a[]的第一个元素a[0]赋值为所要查找元素的值。下面是实现代码:

int Search_Seq(int a[], int length, int key)

{

int i;

a[0] = key;

for (i = length; a[i] != key; i--)

;

return i;

}

将要查找的值key赋值给a[0],然后从a[]数组下标最高位依次向最低比较(也就是说比较元素从数组最后一位,即length,移向最开始一位,即0,比较),一旦有a[i]与查找值key相等,则返回i值。由于a[0]已经是key值,所以数组中必然有一个值等于key(原数组没有的话会比较到a[0],a[0]与key值相等,故返回0),当返回值为0的时候,表明没有找到该值。

加入main():

int main(void)

{

int length, i, key,n;

int *a;

printf("输入长度:");

scanf("%d", &length);

a = (int *)malloc(sizeof(int)*(length +1));

printf("输入各个元素的值:");

for (i = 1; i <= length; i++)

{

scanf("%d",&a[i]);

}

printf("输入查找的元素:");

scanf("%d", &key);

n=Search_Seq(a, length, key);

printf("该元素的位置为:%d\n",n);

return 0;

}

折半查找法:

折半查找法要求该数组为有序的,在实际操作中可以在输入之后多增加一步排序操作,此处实例就不加入此步骤,直接输入有序数组:

int Search_Bin(int a[], int key, int length)

{

int mid, high, low;

low = 1;

high = length;

while (low <= high)

{

mid = (low + high) / 2;

if (a[mid] == key)

return mid;

else

if (a[mid] < key)

low = mid + 1;

else

if (a[mid]>key)

high = mid - 1;

}

return 0;

}

初始化low为1,high为数组长度。当low小于或等于high时,将low和high之和除以二之后赋值给mid,让mid指向查找范围内的中间的一个值。然后判断mid下标的值与key值之间的大小,若相等,返回mid;若mid下标的值大于key值,则将mid-1的值赋值给high,因为原来的mid到high部分包括mid已经确定大于要查找的值;同理,当mid下标的值小于key值的时候,将mid+1的值赋值给low。

加入main()测试:

int main(void)

{

int i, key, len, n;

int *p;

printf("输入长度:");

scanf("%d", &len);

printf("输入各个元素的值:");

p = (int *)malloc(sizeof(int)*(len +1));

for (i = 1; i <= len; i++)

scanf("%d",&p[i]);

printf("输入要查找的值:");

scanf("%d", &key);

n = Search_Bin(p, key, len);

if (n == 0)

printf("没有找到该值\n");

else

printf("该值的位置为:%d\n",n);

return 0;

}

c语言监视,C语言设置监视哨的顺序查找、折半查找算法的实现相关推荐

  1. c语言折半查找输出坐标,数据结构(C语言版)——有序表查找(折半查找)(代码版)...

    数据结构(C语言版)--有序表查找(折半查找)(代码版) 数据结构(C语言版)--有序表查找(折半查找)(代码版) #include #include #define ERROR 0 #define ...

  2. 设置监察哨的顺序查找

    思想    在表的一端设置一个称为"监视哨"的附加单元,存放要查找元素的关键字.从表的另一端开始查找如果在"监视哨"找到元素的关键字,返回查找失败信息,否则返回 ...

  3. C语言数组查找(线性查找 折半查找)

    线性查找 #include <stdio.h> #include <math.h>void find_nine(int numbers[]) {int i;for(i = 0; ...

  4. 查找算法的实现c语言,查找算法的实现(C语言版)

    <查找算法的实现(C语言版)>由会员分享,可在线阅读,更多相关<查找算法的实现(C语言版)(6页珍藏版)>请在人人文库网上搜索. 1.芬梨受交峙东喊济雏狈违晕裂赵檀芬逛温乌摄阿 ...

  5. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  6. C语言数据结构顺序表的顺序查找和折半查找的功能

    C语言顺序表顺序查找和折半查找的基本思想和应用 顺序查找算法:又称为线性查找,主要用在-线性表-中进行查找 通常分为:1-无序线性表的一般查找: 2-对关键字有序的顺序表查找: 优缺点分析: 缺点:当 ...

  7. c语言监视哨用法,C++ 实现带监视哨的顺序查找算法

    这篇文章主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下. 监视哨往往是程序里面的一个变量,如果是对数 ...

  8. 设置了监视哨的顺序查找算法效率高?你确定吗?

    [问题描述] 严蔚敏教授在<数据结构(C语言版 第2版)>中的顺序查找一节中提到"当元素个数≥1000时,设置有监视哨的顺序查找算法,比未设监视哨的顺序查找算法,进行一次查找所需 ...

  9. 数据结构——线性表的查找:顺序查找、设置监视哨的顺序查找、折半查找

    算法7.1顺序查找 #include<iostream> using namespace std;typedef int KeyType; typedef int InfoType; #d ...

最新文章

  1. 涂抹mysql笔记-mysql复制特性
  2. 【GAN优化】小批量判别器如何解决模式崩溃问题
  3. Quartz分布式实现
  4. signature=fc89d4352b6699754c14ce282ec75426,Method for Assembly of Nucleic Acid Sequence Data
  5. leetcode520. py解字符串真是太残暴了
  6. 【征稿通知】CCF第37届中国计算机应用大会 CCF NCCA 2022
  7. VC遍历窗口上的控件
  8. VWware15安装windows XP纯净版虚拟机
  9. linux查看实时的日志命令,Linux实时查看日志的四种命令详解
  10. 游戏测试一工作原理及测试流程
  11. 【Unity】打包WebGL项目遇到的问题及解决记录
  12. threejs学习之透视相机与正交相机
  13. Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
  14. 超详细!Jmeter性能测试(一)
  15. 2021届校招求职流程全解析(IT企业和国企)
  16. 跨境运营培训品牌商店设计技巧
  17. 送外卖优先级_如何在恶劣天气让外卖小哥优先送您的订单?
  18. UnityHDRP贴图clipping方法
  19. HoloLens增强现实: Vuforia + Unity3D + SolidWorks + 3ds Max 的一个例子 (网络摄像头也可以)
  20. ubuntu oracle工具下载,Ubuntu Oracle SQL Developer 1.5 下载

热门文章

  1. 视频处理基本技术(取帧、合帧)
  2. 晋城一中oj 神奇的序列
  3. 《大话设计模式》精髓理解——Chapter 01 - 05 开放封闭与依赖倒转
  4. 数据透视表(2)|计算字段、计算项
  5. STM32学习笔记1——软硬件基础之keil5编程与GPIO开发
  6. 怎么清洁计算机主机内部,机箱怎么防尘 机箱清灰步骤【教程】
  7. 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
  8. 如何理解vcc,vdd,vss
  9. 休闲互动游戏有哪些?互动游戏对战平台是什么?
  10. SpringBoot 集成Swagger3+knife4j