【数据结构】7.1 查找的基本概念

news2024/12/29 10:50:05

文章目录

    • 1. 查找表
    • 2. 关键字
    • 3. 查找
    • 4. 动态查找表和静态查找表
    • 5. 平均查找长度

在这里插入图片描述

1. 查找表

问题:在哪里找?

  • 答:在一个新的数据结构查找表上面找。

查找表

  • 查找表是由同一类型的数据元素(或记录)构成的集合
  • 由于 “集合” 中的数据元素之间存在着松散的关系(没有严格的前趋和后继关系),因此查找表是一种应用灵便的结构。

在这样一个表格中,不管把哪个同学的成绩信息放在前面,都不会打乱这张表的所要表示的信息,这样的一个没有严格前趋后继关系的表格就称为查找表在这里插入图片描述

2. 关键字

问题:什么查找?

  • 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。
    • 如:给定一个姓名叫张三,在上面的成绩表中找一个叫张三的人的数学这一个关键字的值。
    • 想找出物理考了 92 分的人是谁,当物理的关键字的值为 92 的时候就说明找到了。

关键字

用来标识一个数据元素(或记录)的某个数据项的值。

  • 主关键字:可唯一的表示一个记录的关键字是主关键字。
    • 如:准考证号,如果按照准考证号去找的话,只能找到一个人。
  • 次关键字:反之,用以识别若干记录的关键字是次关键字。
    • 如:姓名,如果用一个叫张三的名字就可能找出好几个同学。

3. 查找

问题:查找成功否?

查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。

  • 若查找表中存在这样一个记录,则称:查找成功
    • 查找结果给出整个记录的信息,或指示该记录在查找表中的位置
  • 否则称:查找不成功
    • 查找记录给出空记录空指针

问题:查找目的是什么?

对查找表经常进行的操作

  1. 查询:查询某个特定的数据元素是否在查找表中。
    • 如:看看成绩单中有没有叫张三的人、有没有物理 100 分的人。
  2. 检索:检索某个特定的数据元素的各种属性。
    • 如:我知道有张三这个人,现在就想知道张三的各科成绩是多少、总分是多少。
    • 根据张三这个姓名来查找其他的值。
  3. 插入:在查找表中插入一个数据元素。
    • 看看成绩表里有没有张三这个人,没有的话就把张三的成绩插入到表中。
  4. 删除:删除查找表中的某个数据元素。
    • 张三转学了,要把他的信息从成绩表中删除。

4. 动态查找表和静态查找表

问题:查找表怎么分类?

  1. 静态查找表
    • 仅作查询(检索)操作的查找表。
    • 不改变集合内的数据元素。
  2. 动态查找表
    • 插入删除操作的查找表。
    • 即查找又改变集合内的数据元素。
    • 有时在查询之后,还要将 查询 结果为不再查找表中 的数据元素插入到查找表中;
    • 或者,从查找表中删除其 查询 结果为在查找表中的数据元素,此类表尾动态查找表。

5. 平均查找长度

问题:如何评价查找算法?

查找表的评价指标

  • 关键字的平均比较次数,也称平均查找长度 ASLAverage Search Length)

在这里插入图片描述

  • ASL 值 ↓,时间效率 ↑。
    • n:查找表中,总共有多少个数据记录。
    • pi:每一条数据记录可能被查找到的概率(通常认为 pi = 1/n)
    • ci:找到第 i 个数据元素所需要的比较次数。

问题:查找过程中我们要研究什么?

  • 查找的方法取决于查找表的结构,即表中数据元素是依何种关系组织在一起的。
  • 由于对查找表来书,在集合中查询或检索一个特定的数据元素时,若无规律可循,只能对集合中的元素:加以辨认直到找到为止。
  • 而这样的 查询 或 检索 是任何计算机应用系统中使用频度都很高的操作,因此设法提高查找表的查找效率,是本章讨论问题的出发点。
  • 为了提高查找效率,一个办法就是在构造查找表时,在集合中的数据元素之间人为的加上某种确定的约束关系

研究查找表的各种组织方法以及查找过程的实施。

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

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

相关文章

操作系统真相还原_第5章第3节:加载内核(ELF格式分析)

文章目录用C语言写内核(例)二进制程序的运行方法ELF格式的二进制文件ELF文件格式数据类型ELF header的结构Elf32_Phdr的结构ELF文件实例分析将内核载入内存当前的OS信息当前内存规划源码boot.incmbr.sloader.s内核编译并写入硬盘用C语言写内核(例) 源码: int func…

图像处理 手写体英文字母的目标检测与识别 实验报告

获取本实验的项目代码和实验报告&#xff0c;请>点击此处< [0] 摘要 近年来&#xff0c;随着python的迅速崛起&#xff0c;人工智能、图像识别、计算机视觉等新兴学科变得火热起来。Python的发展也伴随着它的各种衍生库、衍生编辑器的发展&#xff0c;其中OpenCV是比较经…

恶意代码分析实战 7 WinDbg

配置WinDbg双机调试。 下载Windbg&#xff08;WDK&#xff09;。 事实上你自己的win10上应该会自带。 配置WinXP虚拟机的boot.ini 改成如图所示的样子 修改主机上Windb的属性。 修改成如图所示&#xff1a; 启动WinXP选择调试状态&#xff0c;启动Windbg即可开始调试。 7.…

【JavaWeb】JavaScript基础语法(下)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:JavaScript基础语法(上)&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01…

程序员的自我修养第七章——动态链接

继续更新《程序员的自我修养》这个系列&#xff0c;主要是夏天没把它看完&#xff0c;补上遗憾。本篇来自书中第七章。 再说动态链接前&#xff0c;我们先阐明为什么要动态链接&#xff1a; 动态链接的产生来自静态链接的局限性。随着静态链接的发展&#xff0c;其限制也越来越…

zookeeper可视化工具

参考资料&#xff1a; 参考网址 使用过程&#xff1a; 首先打开网址&#xff0c;将资源克隆下来解压压缩包 打开压缩目录下 startup.bat ,填入对应地ip即可&#xff08;记得优先启动zookeeper&#xff0c;否则会报错&#xff09;

我的1周年创作纪念日

机缘 我目前还是一名六年级小学生&#xff0c;下半年便升入初中了。 我是在2021年上半年&#xff08;我四年级下期时&#xff09;开始学习C的。后来我自己想做一些小游戏&#xff0c;便经常要在百度上搜索&#xff0c;后来就发现CSDN中的内容比较全面&#xff0c;便加入了CSD…

MacOS下在Pycharm中配置Pyqt5工具(2023年新版教程)

前提&#xff1a;使用Anaconda的包管理工具进行管理。创建environment&#xff0c;然后在该Environment上进行下载操作&#xff01;&#xff01;&#xff01;一、安装相关模块安装pyqt5、pyqt5-tools两个基础包&#xff0c;命令如下&#xff1a;pip install -i https://pypi.tu…

CSS文本与字体(文本格式化/对齐/装饰/转换/间距/阴影/字体/样式/大小/简写属性)

目录 文本颜色 文本颜色和背景色 文本对齐 文本方向 垂直对齐 文字装饰 文本转换 文字缩进 字母间距 行高 字间距 空白 文本阴影 所有 CSS 文本属性 字体选择很重要 通用字体族 Serif 和 Sans-serif 字体之间的区别 一些字体的例子 CSS font-family 属性 字…

vue-countTo不兼容vue3解决方案

我们想要做一个数值增长的过度效果可以使用vue-count-to 官网的地址&#xff1a;https://www.npmjs.com/package/vue-count-to 官网的截图 vue2的使用方式 cnpm install -S vue-count-to在main.js import vueCountTo from "vue-count-to"; Vue.component("C…

【JavaEE】如何开始基础的Servlet编程(基于Tomcat服务器)

如何开始最简单的Servlet编程&#xff1f;&#xff08;基于Tomcat服务器&#xff09;知道了如何借助Tomcat开始进行最简单的Servlet编程后&#xff0c;我们就可以进一步完善功能制作一个基础的网站了。在此之前我们先了解一下Servlet的生命周期。Servlet的生命周期初始化init -…

C++ list

目录 一. 初步了解 1.构造、析构、赋值 2.容量 3.元素访问 4.增删 二. 模拟实现 框架 push_back 迭代器 带参构造、析构、赋值 增删 反向迭代器 所有代码 说白了&#xff0c;就是一个双向循环带头链表&#xff0c;由于我们在数据结构中已经学习过链表的知识&a…

macOS Big Sur 11.7.3 (20G1116) Boot ISO 原版可引导镜像

本站下载的 macOS Big Sur 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。 请访问原文链接&#xff1a;https://sysin.org/blog/macOS-Big-Sur-boot-iso/&a…

Nginx学习整理|入门记录

目录 1. Nginx概述 1.1 Nginx介绍 1.2 Nginx下载和安装 1.3 Nginx目录结构 2. Nginx命令 3. Nginx配置文件结构 4. Nginx具体应用 4.1 部署静态资源 4.2 反向代理 4.3 负载均衡 1. Nginx概述 1.1 Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件…

积分电路的并联电阻、反向放大电路的并联电容的区别?

运放反相比例放大电路中反馈电阻两端经常并联一个电容&#xff0c;而运放积分电路的反馈电容上常常并联一个电阻&#xff0c;两者电路结构相似&#xff0c;如下所示&#xff08;隐去阻容值&#xff09;&#xff0c;二者有何区别呢&#xff1f;电阻、电容分别又起到什么作用&…

Catboost

CatBoost简介 CatBoost是俄罗斯搜索巨头Yandex在2017年开源的机器学习库&#xff0c;是Boosting算法的一种&#xff0c;CatBoost和XGBoost&#xff0c;Lightgbm并称为GBDT三大主流神器&#xff0c;都是在GBDT算法框架下的一种改进实现&#xff0c;XGBoost是被广泛应用于工业界…

使用jstack解决线程爆满问题

问题发现生产应用现存在问题&#xff0c;影响到系统的使用&#xff0c;前端页面只配置了35个派生指标&#xff0c;后台任务生成20000多线程任务&#xff0c;占用了全部资源&#xff0c;导致其他系统也没资源可用&#xff0c;指标工厂也无法进一步使用&#xff0c;今天上午发的死…

Email Signature Manager 9.3 Crack

概述 Email Signature Manager为所有用户创建和部署电子邮件签名 包括合并的联系方式、公司徽标、社交媒体图标 和链接&#xff0c;甚至个性化内容&#xff0c;如用户照片 创建和附加电子邮件活动&#xff0c;向所有人介绍奖项&#xff0c; 活动或促销&#xff0c;或设置运行的…

基于STM32的FreeRTOS开发(1)----FreeRTOS简介

为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统&#xff0c;它主要用于嵌入式系统。它非常轻量级&#xff0c;可以在很小的硬件资源上运行&#xff0c;因此非常适合在限制硬件资源的嵌入式系统中使用。 FreeRTOS提供了一组简单的任务管理功能&#xff0c;可以让…

基于Springboot vue前后端分离在线培训考试系统源码

# 云帆培训考试系统 管理账号&#xff1a;admin/admin 学员账号&#xff1a;person/person # 介绍 一款多角色在线培训考试系统&#xff0c;系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能&#xff0c;考…