第七章第一节:顺序查找和折半查找

news2025/9/12 3:51:13

文章目录

  • 教程
  • 1. 查找的基本概念
    • 1.1 对查找表的常见操作
    • 1.2 查找算法的评价指标
  • 2. 顺序查找
    • 2.1 顺序查找的算法思想
    • 2.2. 顺序查找的实现
    • 2.3 查找效率分析
    • 2.4 顺序查找的优化(对有序表)
    • 2.5 用查找判定树分析ASL
    • 2.6 顺序查找的优化(被查概率不相等)
  • 3. 折半查找
    • 3.1 折半查找的算法思想
    • 3.2 折半查找的算法实现
    • 3.3 查找判定树(重要 )
    • 3.4 查找效率分析
    • 3.5 总结
  • 4. 分块查找(选择题)
    • 4.1 分块查找的算法思想
    • 4.2 查找效率分析(ASL)
    • 4.3 总结

教程

  1. 查找

  2. 顺序查找:

  3. 折半查找

  4. 分块查找:

1. 查找的基本概念

查找——在数据集合中寻找满足某种条件的数据元素的过程称为查找
查找表(查找结构)——用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成。
关键字——数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的。
在这里插入图片描述


在这里插入图片描述


1.1 对查找表的常见操作

在这里插入图片描述

1.2 查找算法的评价指标

查找长度——在查找运算中,需要对比关键字的次数称为查找长度
平均查找长度(ASL, Average Search Length)——所有查找过程中进行关键字的比较次数的平均值。

ASL的数量级反应了查找算法时间复杂度

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

2. 顺序查找

2.1 顺序查找的算法思想

顺序查找,又叫“线性查找”,通常用于线性表。
算法思想:从头到jio 挨个找(或者反过来也OK)

2.2. 顺序查找的实现

typedef struct{    //查找表的数据结构(顺序表)
    ElemType *elem;  //动态数组基址
    int TableLen; //表的长度
}SSTable;
//顺序查找
int Search_Seq(SSTable ST,ElemType key){
    int i;
    for( i=0; i<ST.TableLen && ST.elem[i] !=key; ++i);//查找成功,则返回元素下标;查找失败,则返回-1
return i==ST.TableLen? -1 : i;
}

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

2.3 查找效率分析

在这里插入图片描述


2.4 顺序查找的优化(对有序表)

在这里插入图片描述


2.5 用查找判定树分析ASL

在这里插入图片描述

  • 一个成功结点的查找长度=自身所在层数
  • 一个失败结点的查找长度=其父节点所在层数
  • 默认情况下,各种失败情况或成功情况都等概率发生

2.6 顺序查找的优化(被查概率不相等)

在这里插入图片描述
在这里插入图片描述

3. 折半查找

折半查找,又称“二分查找”,仅适用于有序的顺序表

3.1 折半查找的算法思想

在这里插入图片描述
折半查找的基本思想:

首先将给定值key与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分(例如,在查找表升序排列时,若给定值key大于中间元素,则所查找的元素只可能在后半部分)。然后在缩小的范围内继续进行同样的查找,如此重复,直到找到为止,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。

3.2 折半查找的算法实现

在这里插入图片描述

3.3 查找判定树(重要 )

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

3.4 查找效率分析

查找成功:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.5 总结

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


4. 分块查找(选择题)

分块查找又称索引顺序查找,它吸取了顺序查找和折半查找各自的优点,既有动态结构,又适于快速查找

4.1 分块查找的算法思想

分块查找的基本思想:

将查找表分为若干子块。块内的元素可以无序,但块之间是有序的即第一个块中的最大关键字小于第二个块中的所有记录的关键字,第二个块中的最大关键字小于第三个块中的所有记录的关键字,以此类推。再建立一个索引表,索引表中的每个元素含有各块的最大关键字和各块中的第一个元素的地址,索引表按关键字有序排列。
在这里插入图片描述

分块查找,又称索引顺序查找,算法过程如下:

①在索引表中确定待查记录所属的分块(可顺序、可折半)
②在块内顺序查找

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 查找效率分析(ASL)

例如,关键码集合为{88,24,72,61,21,6,32,11,8,31,22,83,78,54},按照关键码值24,54,78,88,分为4个块和索引表,
如图7.3所示;

分块查找的平均查找长度为索引查找和块内查找的平均长度之和。设索引查找和块内查找的平均杏找长度分别为L,Ls,则分块查找的平均查找长度为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在centos中注册gitlab runner

注册runner 有几种不同的方式&#xff0c;这里介绍的是在centos7中使用 rpm包来安装 按照gitlab runner的官网链接里面的介绍&#xff1a; gitlab runner 链接 下载 官网描述&#xff1a; ## Replace ${arch} with any of the supported architectures, e.g. amd64, arm, ar…

python 空间滤波

均值滤波器 空域变换包含灰度变换和空间滤波 灰度变换是通过点对点的映射进行图像增强&#xff0c;是一种点运算 空间滤波是基于邻域的一种运算&#xff0c;即图像像素的灰度值不仅和当前点有关&#xff0c;还和这个点周围邻域像素点的灰度值有关。所以空间滤波其实是一种加…

如何管理oralce口令文件和参数文件

口令文件 口令文件审核 Step 1: 使用root账号将 oracle dba的权限移除 [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ id oracle uid1501(oracle) gid1501(oinstall) groups1501(oinstall),1502(dba),1503(oper),1504(backupdba)…

浅析linux 内核 高精度定时器(hrtimer)实现机制(一)

1 hrtimer 概述 在Linux内核中已经存在了一个管理定时器的通用框架。不过它也有很多不足&#xff0c;最大的问题是其精度不是很高。哪怕底层的定时事件设备精度再高&#xff0c;定时器层的分辨率只能达到Tick级别&#xff0c;按照内核配置选项的不同&#xff0c;在100Hz到1000…

灵界的科学丨一、灵界在哪里?

摘自李嗣涔教授《灵界的科学》 在国内物理学界近十位学者的见证下&#xff0c; 发现我们所处四度时空的物质世界之外&#xff0c; 似乎还有一个世界的存在&#xff0c; 当年我把这个世界称作信息场&#xff0c; 也就是俗称的灵界。 二十世纪末宇宙大尺度谜团的重大发现──…

设计模式学习记录

设计模式 UML图&#xff1a; ------> 依赖 ——>关联 -------▲ 实现 —–—▲ 继承 &#x1f53a;———> 聚合 ▲———> 组合&#xff08;关联性更强&#xff09; 一、策略模式&#xff08;行为型&#xff09; 策略模式&#xff1a;是一种定义一系列算法的方法…

Java --- Spring6项目创建及注意事项

目录 一、Spring框架解决的问题 二、Spring介绍 三、Spring八大模块 四、Spring特点 五、第一个Spring6入门程序 六、spring的细节 6.1、配置文件的bean的id不能重复 6.2、spring底层是通过反射调用无参构造方法创建对象 6.3、spring会把创建好的对象存储在Map集合中 6.4…

【数据结构初阶】树+二叉树+堆的实现

真正的勇士&#xff0c;就是在看清生活的真相后&#xff0c;依旧慷慨面对他所遭受的苦难与挫折。 大学究竟教会了我们什么呢&#xff1f;或许答案只有一个&#xff0c;看清自己&#xff0c;与自己和解&#xff0c;和自己坐下来谈一谈。 人生或许本就没有什么意义&#xff0c;…

MySQL的缓冲池(buffer pool)及 LRU算法

1.什么是缓冲池&#xff08;buffer pool&#xff09; buffer pool 是数据库的一个内存组件&#xff0c;里面缓存了磁盘上的真实数据&#xff0c;Java系统对数据库的增删改操作&#xff0c;主要是这个内存数据结构中的缓存数据执行的。 控制块 存的是 数据页所属的表 空间号&a…

MATLAB break语句

MATLAB中 break 语句用于终止 for 或 while 循环的执行&#xff0c;当在循环体内执行到该语句的时候&#xff0c;程序将会跳出循环&#xff0c;继续执行循环语句的下一语句。 注意&#xff1a;在嵌套循环中&#xff0c;break 退出只能在循环发生&#xff0c;后通过的声明控制循…

git关于创建/删除分支常用命令

主要用来介绍git中如何操作分支的命令&#xff1a; 1.git查看所有的分支: git branch -a 2.创建本地分支&#xff1a; git checkout -b <name> 3.有了本地分支之后推送到远程分支; git push origin <name> 4.切换分支&#xff1a; git checkout <name> 5.删除…

黑*头条_第5章_文章发布粉丝管理成形记

黑*头条_第5章_文章发布&粉丝管理成形记 文章目录黑*头条_第5章_文章发布&粉丝管理成形记文章发布&粉丝管理1 需求分析1.1 功能需求1.2 前端需求1.2.1 图文数据需求1.2.2 素材管理需求1.2.3 发布文章需求1.2.4 内容列表需求1.2.5 粉丝概况需求2 定义2.1 后端定义2.…

MacBook磁盘内存空间清理软件CleanMyMac2023

Mac电脑用的时间久了&#xff0c;Mac用户尤其是MacBook用户会经常收到“磁盘几乎已满”的提示&#xff0c;如何解决这个问题&#xff0c;当我们使用苹果MAC一段时间后&#xff0c;就会有大量的垃圾文件占用磁盘空间&#xff0c;例如系统缓存文件、应用程序缓存文件、备份和重复…

2022/11/18[指针] 关于指针的初步理解

先看一段利用指针交换a和b值得代码&#xff1a; #include<stdio.h> void swap(int* p1, int* p2); int main() {int a, b;int* pa, * pb;printf("enter:");scanf_s("%d%d", &a, &b);pa &a;pb &b;printf("%d,%d\n", pa,…

面试:线程池核心线程如何保持一直运行的

对于Java中 Thread 对象&#xff0c;同一个线程对象调用 start 方法后&#xff0c;会在执行完run 后走向终止&#xff08;TERMINATED&#xff09;状态&#xff0c;也就是说一个线程对象是不可以通过多次调用 start 方法重复执行 run 方法内容的。Java的线程是不允许启动两次的&…

frp内网穿透服务

参考博客&#xff1a; https://www.jianshu.com/p/19ea81efffc4 https://blog.csdn.net/yj222333/article/details/124752420 依赖于&#xff1a;Github开源软件FRP 下载地址&#xff1a;https://github.com/fatedier/frp/releases frp 主要由 客户端(frpc) 和 服务端(frps…

基于JAVA景区售票系统设计与实现 开题报告

本科生毕业论文 基于java框架springboot旅游景区景点购票系统 开题报告 学 院&#xff1a; 专 业&#xff1a; 计算机科学与技术 年 级&#xff1a; 学生姓名&#xff1a; 指导教师…

三维模型文件以及obj、ply格式文件生成pcd点云文件

方法一、三维模型文件生成obj文件 要想生成点云文件&#xff0c;要先将三维模型文件保存为obj文件格式&#xff0c;步骤如下&#xff1a; 通过SolidWorks将模型保存为stl文件格式打开SolidWorks的插件选择&#xff0c;在ScanTo3D前面打勾 在solidworks中以网格文件的形式打开…

通信算法之九十六:电力通信系统-HRF多载波通信系统-物理层收发信道开发

目录1.HRF通信系统-物理层收发信道开发1.1 SIG发射机算法功能模块1.2 SIG接收机算法功能模块1.3 PHR发射机算法功能模块1.4 PHR接收机算法功能模块1.5 PSDU发射接收机处理流程1.6前导LTF/STF序列发射接收处理流程1.7PPDU帧&#xff08;前导SIGPHRPSDU&#xff09;发射接收处理流…

阿里云服务器(Ubuntu)配置nextcloud个人网盘

tags: Ubuntu Server Linux 写在前面 最近迷恋上了云服务器的配置, 感觉云服务器能做的事情太多了, 不管是docker还是直接部署, 都是相当方便快捷的, 下面来看看在阿里云服务器配置nextcloud网盘的基本配置方法, 这里参考了一篇文章1, 写的相当详细了, 我这里只是做一些补充.…