顺序表查找-数据结构

定义 设有一个集合T,其中有n个数据项,集合T及其中数据项的形式如下

T={(k0,I0),(k1,I1),...,(kn-1,In-1)}

k0,k1,...,kn-1是互不相同的关键字值

Ij(0≤j≤n-1)是与关键字值kj相关的信息

给定一个特定的关键字值K,查找问题是在T中确定数据项(kj,Ij),使得kj=K

查找表中的数据项也称为记录

每个记录至少包含一个关键字

记录中关键字的类型可以是能够进行比较操作的任意类型

  • 顺序查找方法

初始时,将给定的关键字值K与表中第一个记录的关键字值相比较,若两个值相等则找到目标,查找成功;否则将K与表中下一个记录的关键字值继续比较并判断是否相等,依此类推。如果直到最后一个记录的关键字值与K都不相等,则表明所存储的数据中没有要查找的目标,查找不成功

查找的平均查找长度为(n+1)/2

不成功查找的查找次数为n

当数据按关键字有序存储时,可以改进顺序查找方法

折半查找也称为二分查找,其适用条件是数组中各个记录按关键字有序排列,所以折半查找只适用于有序表

折半查找并不从有序表的一端开始查找,而是从中间开始查找

  • 例子

给定有序表

11 15 18 22 33 45 60 65 82 86 97

使用折半查找方法查找22,给出查找过程

初始时

相关推荐
Haohao+++32 分钟前
Stable Diffusion原理解析
人工智能·深度学习·算法
彭于晏Yan35 分钟前
MyBatis-Plus使用动态表名分表查询
java·开发语言·mybatis
ideaout技术团队3 小时前
leetcode学习笔记2:多数元素(摩尔投票算法)
学习·算法·leetcode
代码充电宝4 小时前
LeetCode 算法题【简单】283. 移动零
java·算法·leetcode·职场和发展
MediaTea5 小时前
Python IDE:Spyder
开发语言·ide·python
不枯石6 小时前
Matlab通过GUI实现点云的均值滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab·均值算法
不枯石6 小时前
Matlab通过GUI实现点云的双边(Bilateral)滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab
二十雨辰7 小时前
vite如何处理项目中的资源
开发语言·javascript
聆风吟º7 小时前
远程录制新体验:Bililive-go与cpolar的无缝协作
开发语言·后端·golang
白水先森8 小时前
C语言作用域与数组详解
java·数据结构·算法