软考27-上午题-查找

一、基本概念

1-1、查找表:

同一类型的数据元素构成的集合。

对查找表常用的操作:

  1. 查找表中查询某个特定的元素
  2. 检索某个特定的元素的各种属性

通常只进行这两种操作的查找表:静态查找表

1-1-2、静态查找表:

  • 顺序查找——考的少
  • 折半查找(二分查找)——考的多
  • 分块查找——没考过
  1. 在查找表中插入一个数据元素;
  2. 在查找表中删除一个数据元素;

1-1-3、动态查找表:

  • 二叉排序树
  • 平衡二叉树
  • B_树——考的少
  • 哈希表

 

1-2、关键字:

数据元素的某个数据项的值;

  1. 主关键字:唯一标识一个数据元素的关键字
  2. 次关键字:能够标识多个数据元素的关键字。

1-3、平均查找长度:

衡量查找算法好坏的依据:其关键字和给定值进行过比较的记录个数的期望值,即,平均查找长度。

 

二、静态查找

2-1、顺序查找

顺序查找(又称线性查找)是一种简单的查找算法,它按照数据元素的顺序从前往后依次查找目标元素。

顺序存储方式、链式存储方式的查找表,顺序查找都可以。

不需要有序!!!

顺序查找成功的平均查找长度: 

2-2、折半查找

基本思想:将有序数组分成两个部分,找到中间元素,与要查找的关键字进行比较,如果相等,则查找成功;如果要查找的关键字比中间元素小,则在左半部分继续查找;如果要查找的关键字比中间元素大,则在右半部分继续查找。通过不断的缩小查找范围,最终可以找到要查找的元素。

示例:查找元素16

mid = (l+r)/ 2,往下取整。 

 

查找失败的情况:low在hight的后面。

折半查找只适合:顺序存储!!!

 

2-3、折半查找判定树

将折半查找的过程用一颗二叉树描述,当前查找区间的中间位置序号作为根。

示例:

 

查找成功时,折半查找的过程恰好走了一条从根结点到被查找结点的路径;

与关键字进行比较的次数 = 被查找结点在树中的层数。

因此,折半查找在查找成功时进行比较的关键字个数最多不超过树的深度,而具有 n 个结点的判定树的深度为,所以折半查找在查找成功时和给定值进行比较的关键字个数最多为。 

折半查找的平均查找长度:

 

 

2-4、真题

真题1:

真题2:

真题3:

真题4:

顺序查找,最多比较次数:n 

真题5:

真题6:

 真题7:

 

真题8:

 真题9:

真题10:

 真题11:

真题12:

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速搭建PyTorch环境:Miniconda一步到位

快速搭建PyTorch环境:Miniconda一步到位 🌵文章目录🌵 🌳一、为何选择Miniconda搭建PyTorch环境?🌳🌳二、Miniconda安装指南:轻松上手🌳🌳三、PyTorch与Minic…

新年开始更新自己!八大出生缺陷惠民项目!漫漫回程路——“早”读

时间不等人呢! 引言代码第一篇 人民日报 【夜读】新的一年,从更新自己开始第二篇(跳)人民日报 来啦 新闻早班车要闻社会政策 结尾 引言 天还是那个天 但是今天是一个不一样的日子 是我爷爷的忌日 所以按习俗 我们早早就开始拜 然后…

机器学习:Softmax介绍及代码实现

Softmax原理 Softmax函数用于将分类结果归一化,形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z,我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果,具体计算公式为: 对于…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法,而InstantiationAwareBeanPostProce…

浅析Linux内核线程监测机制:Hung Task

文章目录 概述Hung Task配置Hung Task机制初始化Hung Task监测线程 相关参考 概述 Hung Task机制周期性地监测系统中处于TASK_UNINTERRUPTIBLE状态(即D状态)的进程,如果超过120s(时间可配),进程状态还没有…

Ambiguous Medical Image Segmentation using Diffusion Models利用扩散模型分割模糊医学图像

摘要: 事实证明,在临床任务中,来自一组专家的集体见解总是优于个人的最佳诊断。对于医学图像分割任务,现有的基于人工智能的替代研究更多地侧重于开发能够模仿最佳个体的模型,而不是利用专家组的力量。 在本文中&…

实战案例:将已有的 MySQL8.0 单机架构变成主从复制架构

操作步骤 修改 master 主节点 的配置( server-id log-bin )master 主节点 完全备份( mysqldump )master 主节点 创建复制用户并授权master 主节点 将完全备份文件拷贝至从节点修改 slave 从节点 的配置( server-id rea…

gorm day9(结)

gorm day9 实体关联gorm会话 实体关联 自动创建、更新 在创建、更新数据时,GORM会通过Upsert自动保存关联及其引用记录。 user : User{Name: "jinzhu",BillingAddress: Address{Address1: "Billing Address - Address 1"},Ship…

[数学建模] 计算差分方程的收敛点

[数学建模] 计算差分方程的收敛点 差分方程:差分方程描述的是在离散时间下系统状态之间的关系。与微分方程不同,差分方程处理的是在不同时间点上系统状态的变化。通常用来模拟动态系统,如在离散时间点上更新状态并预测未来状态。 收敛点&…

git stash 正确用法

目录 一、背景 二、使用 2.1 使用之前,先简单了解下 git stash 干了什么: 2.2 git stash 相关命令 2.3 使用流程 1. 执行 git stash 2. 查看刚才保存的工作进度 git stash list 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在…

NLP快速入门

NLP入门 课程链接:https://www.bilibili.com/video/BV17K4y1W7yb/?p1&vd_source3f265bbf5a1f54aab2155d9cc1250219 参考文档链接1:NLP知识点:Tokenizer分词器 - 掘金 (juejin.cn) 一、分词 分词是什么? 每个字母都有对应…

数据分析案例-基于亚马逊智能产品评论的探索性数据分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

URL编码算法:解决特殊字符在URL中的烦恼

引言: URL编码算法是一种将URL中的特殊字符转换为特定格式的编码方式。它在网络传输中起到了保护数据安全与完整性的重要作用。本文将深入探讨URL编码算法的优点与缺点,并介绍它在Web开发、网络安全等方面的应用。 URL编码解码 | 一个覆盖广泛主题工具…

JavaWeb学习|i18n

学习材料声明 所有知识点都来自互联网,进行总结和梳理,侵权必删。 引用来源:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 i18n 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言&…

Ubuntu 22 部署Zabbix 6.4

一、安装及配置postgresql sudo apt-get update sudo apt-get install postgresql postgresql-client 修改配置文件,配置远程访问:(PostgreSQL安装路径下的data,也是安装时data的默认路径)data目录下的 pg_hba.conf …

BN介绍:卷积神经网络中的BatchNorm

一、BN介绍 1.原理 在机器学习中让输入的数据之间相关性越少越好,最好输入的每个样本都是均值为0方差为1。在输入神经网络之前可以对数据进行处理让数据消除共线性,但是这样的话输入层的激活层看到的是一个分布良好的数据,但是较深的激活层…

.NET命令行(CLI)常用命令

本文用于记录了.NET软件开发全生命周期各阶段常用的一些CLI命令,用于开发速查。 .NET命令行(CLI)常用命令 项目创建(1)查看本机SDK(2)查看本机可以使用的.NET版本(3)生成…

C语言--------数据在内存中的存储

1.整数在内存中的存储 整数在内存是以补码的形式存在的; 整型家族包括char,int ,long long,short类型; 因为char类型是以ASCII值形式存在,所以也是整形家族; 这四种都包括signed,unsigned两种,即有符号和无符号&am…

Python Matplotlib 的学习笔记

Python Matplotlib 的学习笔记 0. Python Matplotlib 简介1. 为什么要用 Matplotlib?2. Matplotlib 基础类详解2-1. Line(线)2-2. Marker(标记)2-3. Text(文本)2-4. Legend(图例&…

Python面向对象学习小记

python中的类可以分为经典类和新式类。 类的定义方法: class 类名: pass 类名后面没有小括号!!! 【注意和函数的定义做区分。】 函数的定义: def 函数名(): pass