C语言 数组——查找算法的函数实现

目录

线性查找(Linear Search)

线性查找的性能

猜数游戏

二分查找(Binary Search)

并非吹毛求疵,鸡蛋里挑骨头

二分查找的性能


线性查找(Linear Search

要求数据表是已排好序的
从线性数据表中的第一个(或最后一个)记录开始查找
依次将记录的关键字与查找关键字进行比较
当某个记录的关键字与查找关键字相等时,即查找成功
反之,查完全部记录都没有与之相等的关键字,则查找失败

线性查找的性能

猜数游戏

二分查找(Binary Search

要求数据表是已排好序的
先将表的中间位置记录的关键字与查找关键字比较
如果两者相等,则查找成功
否则将表分成前、后两个子表,根据比较结果,决定查找哪个子表

并非吹毛求疵,鸡蛋里挑骨头

mid = (high + low) / 2;
如果数组很大, low high 之和大于有符号整数的极限值(在
limits.h 中定义)
就会发生数值溢出,使 mid 成为一个负数
防止溢出的解决方案
修改计算中间值的方法,用减法代替加法
mid = low + (high - low) / 2;

二分查找的性能

比较次数少,查找速度快,平均性能好
每执行一次,都将查找空间减少一半,是计算机科学中分治思想的完美体现
最多所需的比较次数是第一个大于表中元素个数的 2 的幂次数
14 24 >14 )个数,最多比较的次数是4
缺点
要求待查表按关键字有序排列,否则需要先进行排序操作
必须采用顺序存储结构,插入和删除数据需移动大量的数据
适用于不经常变动而查找频繁的有序表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React-JSX基础

什么是JSX 概念:JSX是JavaScript和XML(HTML)的缩写,表示在JS代码中编写HTML模板结构,它是React中编写UI模板的方式 优势:1.HTML的声明式模板写法 2.JS的可编程能力 JSX的本质 JSX并不是标准的JS语法&…

HeyGen AI是什么?怎样使用HeyGen AI?

在数字时代,视频内容为王。无论是在社交媒体还是网站上,视频都以其独特的方式吸引着人们的眼球。然而,制作出专业水准的视频往往需要大量的时间和技术知识。HeyGen AI正是为了解决这一难题而诞生的。 HeyGen AI简介 HeyGen AI是一个创新的视…

【Fiddler抓包工具】第四节.断点设置和弱网测试

文章目录 前言一、断点设置 1.1 全局断点 1.2 局部断点 1.3 打断点的几种常用命令 1.4 篡改响应报文二、弱网测试 2.1 网络限速 2.2 精准限速总结 前言 一、断点设置 1.1 全局断点 特点: 中断Fiddler捕获的所有请求,包括…

You must call removeView() on the child‘s parent first.异常分析及解决

问题描述 对试图组件快速的左右滑动过程,发现某一张图片没加载出来,偶现crash 问题分析 view在上次已经是某个ParentView的child,然而现在又把它做为另外一个view的child,于是出现一个view有两个parent。所以就产生了这个错误。…

Python实现将LabelMe生成的JSON格式转换成YOLOv8支持的TXT格式

标注工具 LabelMe 生成的标注文件为JSON格式,而YOLOv8中支持的为TXT文件格式。以下Python代码实现3个功能: 1.将JSON格式转换成TXT格式; 2.将数据集进行随机拆分,生成YOLOv8支持的目录结构; 3.生成YOLOv8支持的YAML文件…

GetWay

SpringCloud - Spring Cloud 之 Gateway网关,Route路由,Predicate 谓词/断言,Filter 过滤器(十三)_spring.cloud.gateway.routes-CSDN博客 官网:Spring Cloud Gateway 工作原理:Spring Cloud G…

Spring Boot:SpringBoot 如何优雅地定制JSON响应数据返回

一、前言 目前微服务项目中RESTful API已经是前后端对接数据格式的标配模式了,RESTful API是一种基于REST(Representational State Transfer,表述性状态转移)原则的应用程序编程接口(Application Programming Interfac…

光伏电站在线监测智能诊断系统:开启无人值守新纪元

光伏电站在线监测智能诊断系统:开启无人值守新纪元 大家都知道光伏电站是通过汲取着太阳的光芒,为人类提供源源不断的电能源。然而,随着光伏电站规模的扩大和复杂性的增加,如何有效提高发电效率、减少人工维护成本,实…

前端菜鸡,对于35+程序员失业这个事有点麻了

“经常看到30岁程序员失业的新闻,说实话,有点麻。目前程序员供求关系并未失衡,哪怕是最基础的前端或者后台、甚至事务型的岗位也是足够的。 事实上,现在一个开出的岗位要找到一位尽职尽责能顺利完成工作的程序员并不是一件那么容…

YOLOv8原理详解

Yolov8是2023年1月份开源的。与yolov5一样,支持目标检测、分类、分割任务。 Yolov8主要改进之处有以下几个方面: Backbone:依旧采用的CSP的思想,不过将Yolov5中的C3模块替换为C2F模块,进一步降低了参数量&#xff0c…

mysql实战——mysql5.7升级到mysql8.0

1、上传mysql8.0压缩包到/usr/local目录下 tar -zxvf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.25-linux-glibc2.12-x86_64 mysql8 #更改文件夹所属 chown -R mysql.mysql /usr/local/mysql8/ 2、更改配置文件my.cnf vi /etc/my.cnf # 最后几个for8.0的参数要…

Java输入与输出详解

Java输入和输出 前言一、Java打印Hello World二、输出到控制台基本语法代码示例格式化字符串 三、从键盘输入读入一个字符正确写法 使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 N 个数字 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这…

tomcat jdbc连接池的默认配置

MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将…

详解 UML 中的关系概念

关联(Association) 表示两个类之间的一种语义性联系。例如: 学生与班级之间的关联关系。 有向关联(Directed Association) 关联关系有方向性,表示一个类能访问另一个类,但不一定反过来。例如: 教师能查看学生的成绩,但学生不能查…

PMapper:助你在AWS中实现IAM权限快速安全评估

关于PMapper PMapper是一款功能强大的脚本工具,该工具本质上是一个基于Python开发的脚本/代码库,可以帮助广大研究人员识别一个AWS账号或AWS组织中存在安全风险的IAM配置,并对IAM权限执行快速评估。 PMapper可以将目标AWS帐户中的不同IAM用户…

C++入门:从C语言到C++的过渡(1)

目录 1.什么是C 2.C的标准库 3.命名空间 3.1为什么要存在命名空间 3.2命名空间的定义 3.3命名空间的使用 3.3.1域作用限定符 3.3.2using关键字引入某个成员 3.3.3using关键字引入命名空间名称 3.4命名空间的嵌套 3.5命名空间的合并 4.C中的输入与输出 1.什么是C C&am…

BatBot智慧能源管理平台,更加有效地管理能源

随着能源消耗的不断增加,能源管理已成为全球面临的重要问题。BatBot智慧能源管理作为一种的能源管理技术,促进企业在用能效率及管理有着巨大的提升。 BatBot智慧能源管理是一种基于人工智能技术的能源管理系统,通过智能分析和优化能源使用&…

7. 3 层神经网络的实现和输出层的激活函数

目录 1. 3 层神经网络的实现 1.1 输入层数据到 1 层神经元 1.2 1 层神经元到 2 层神经元 1.3 2 层神经元到输出层神经元 2. 输出层的激活函数 2.1 恒等函数 2.2 softmax 函数 2.2.1 softmax 函数表达式 2.2.2 softmax 代码实现 2.2.3 softmax 的改进 2.2.3 softmax 函…

Mixiy(米思齐)安装

Mixiy(米思齐)安装 官网地址:爱上米思齐 打开官网,选择下图的软件进行下载 复制提取码,点击链接跳转到网盘进行下载,选择(RC4完整版) 下载完成后,解压到合适的位置,进入文件夹,双击Mixly.exe即…