c语言监视,C语言设置监视哨的顺序查找、折半查找算法的实现
设置监视哨算法的实现也算是相当简单,和顺序查找的思路一样,但把查找数组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语言设置监视哨的顺序查找、折半查找算法的实现相关推荐
- c语言折半查找输出坐标,数据结构(C语言版)——有序表查找(折半查找)(代码版)...
数据结构(C语言版)--有序表查找(折半查找)(代码版) 数据结构(C语言版)--有序表查找(折半查找)(代码版) #include #include #define ERROR 0 #define ...
- 设置监察哨的顺序查找
思想 在表的一端设置一个称为"监视哨"的附加单元,存放要查找元素的关键字.从表的另一端开始查找如果在"监视哨"找到元素的关键字,返回查找失败信息,否则返回 ...
- C语言数组查找(线性查找 折半查找)
线性查找 #include <stdio.h> #include <math.h>void find_nine(int numbers[]) {int i;for(i = 0; ...
- 查找算法的实现c语言,查找算法的实现(C语言版)
<查找算法的实现(C语言版)>由会员分享,可在线阅读,更多相关<查找算法的实现(C语言版)(6页珍藏版)>请在人人文库网上搜索. 1.芬梨受交峙东喊济雏狈违晕裂赵檀芬逛温乌摄阿 ...
- c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- C语言数据结构顺序表的顺序查找和折半查找的功能
C语言顺序表顺序查找和折半查找的基本思想和应用 顺序查找算法:又称为线性查找,主要用在-线性表-中进行查找 通常分为:1-无序线性表的一般查找: 2-对关键字有序的顺序表查找: 优缺点分析: 缺点:当 ...
- c语言监视哨用法,C++ 实现带监视哨的顺序查找算法
这篇文章主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下. 监视哨往往是程序里面的一个变量,如果是对数 ...
- 设置了监视哨的顺序查找算法效率高?你确定吗?
[问题描述] 严蔚敏教授在<数据结构(C语言版 第2版)>中的顺序查找一节中提到"当元素个数≥1000时,设置有监视哨的顺序查找算法,比未设监视哨的顺序查找算法,进行一次查找所需 ...
- 数据结构——线性表的查找:顺序查找、设置监视哨的顺序查找、折半查找
算法7.1顺序查找 #include<iostream> using namespace std;typedef int KeyType; typedef int InfoType; #d ...
最新文章
- 涂抹mysql笔记-mysql复制特性
- 【GAN优化】小批量判别器如何解决模式崩溃问题
- Quartz分布式实现
- signature=fc89d4352b6699754c14ce282ec75426,Method for Assembly of Nucleic Acid Sequence Data
- leetcode520. py解字符串真是太残暴了
- 【征稿通知】CCF第37届中国计算机应用大会 CCF NCCA 2022
- VC遍历窗口上的控件
- VWware15安装windows XP纯净版虚拟机
- linux查看实时的日志命令,Linux实时查看日志的四种命令详解
- 游戏测试一工作原理及测试流程
- 【Unity】打包WebGL项目遇到的问题及解决记录
- threejs学习之透视相机与正交相机
- Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
- 超详细!Jmeter性能测试(一)
- 2021届校招求职流程全解析(IT企业和国企)
- 跨境运营培训品牌商店设计技巧
- 送外卖优先级_如何在恶劣天气让外卖小哥优先送您的订单?
- UnityHDRP贴图clipping方法
- HoloLens增强现实: Vuforia + Unity3D + SolidWorks + 3ds Max 的一个例子 (网络摄像头也可以)
- ubuntu oracle工具下载,Ubuntu Oracle SQL Developer 1.5 下载
热门文章
- 视频处理基本技术(取帧、合帧)
- 晋城一中oj 神奇的序列
- 《大话设计模式》精髓理解——Chapter 01 - 05 开放封闭与依赖倒转
- 数据透视表(2)|计算字段、计算项
- STM32学习笔记1——软硬件基础之keil5编程与GPIO开发
- 怎么清洁计算机主机内部,机箱怎么防尘 机箱清灰步骤【教程】
- 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
- 如何理解vcc,vdd,vss
- 休闲互动游戏有哪些?互动游戏对战平台是什么?
- SpringBoot 集成Swagger3+knife4j