当前位置: 首页 > news >正文

软考学习 数据结构 查找

1. 顺序查找(Sequential Search)

基本原理:
  • 顺序查找是一种最简单、最直观的查找算法。它从数据集合的第一个元素开始,依次与目标元素进行比较,直到找到目标元素或遍历完所有元素为止。
适用条件:
  • 适用于任何线性结构的数据集合(如数组、链表等),无论数据是否有序。
  • 在数据集较小或数据无序时,顺序查找是较为实用的方法。
时间复杂度:
  • 最坏情况:目标元素位于数据集的最后一个位置,或数据集中没有目标元素,此时需要遍历所有元素,时间复杂度为 O(n)。
  • 平均情况:假设目标元素在任意位置的概率相等,平均情况下查找的比较次数为 n+1/2​,时间复杂度为 O(n)。
  • 最优情况:目标元素是数据集的第一个元素,时间复杂度为 O(1)。
优缺点:
  • 优点:实现简单,无需对数据进行排序,适用于小规模无序数据集。
  • 缺点:对于大规模数据集,效率较低,尤其是数据无序时。

2. 折半查找(Binary Search)

基本原理:
  • 折半查找是一种高效的查找算法,适用于有序的数据集合。它通过每次将查找范围缩小一半来快速定位目标元素的位置。
  • 具体步骤:首先比较中间元素与目标元素的大小。如果相等,查找成功;如果目标元素比中间元素小,则在左半部分继续查找;如果目标元素比中间元素大,则在右半部分继续查找。不断重复这一过程,直到找到目标元素或范围缩小为零。
适用条件:
  • 数据集必须是有序的(如从小到大排序)。
  • 适用于数据量较大且有序的情况。
时间复杂度:
  • 最坏情况:每次查找都将范围缩小一半,因此查找过程的时间复杂度为 O(log⁡n)。
  • 平均情况:与最坏情况相同,时间复杂度为 O(log⁡n)。
  • 最优情况:目标元素位于中间位置,查找一次即可成功,时间复杂度为 O(1)。
  • 折半查找的时间复杂度通常表示为 O(log⁡n),而 log⁡n实际上是指以2为底的对数,即 log2​n。在算法分析中,底数对大O表示法的影响不大,所以我们通常省略底数,直接写作 O(log⁡n)。
优缺点:
  • 优点:时间复杂度较低,查找效率高,尤其适用于大规模有序数据集。
  • 缺点:数据必须是有序的,且不适合频繁插入和删除操作的数据结构,因为每次插入或删除可能需要重新排序。

3. 哈希查找(Hash Search)

基本原理:利用哈希函数将关键字映射到数据表的某个位置,从而可以直接找到所需元素,而不需要逐一比较。

  • 哈希函数:计算关键字的哈希值。哈希函数是一种将输入数据(关键字)转换为哈希表中某个位置的函数。
  • 哈希表:存储数据的表结构。哈希表是一种基于数组的数据结构,哈希函数的输出值作为数组的索引,用于存储数据。
  • 处理冲突:由于哈希函数可能会将不同的关键字映射到同一个位置(即冲突),因此需要有机制来处理这些冲突,常见的处理方法包括链地址法(开放散列)和开放地址法(线性探测、二次探测、双重散列等)。
时间复杂度:
  • 最优情况:哈希函数完美工作,无冲突,查找时间复杂度为 O(1)。
  • 最坏情况:所有关键字都映射到同一个位置,处理冲突时需要遍历所有元素,查找时间复杂度退化为 O(n)。
  • 平均情况:假设哈希函数设计得当且冲突不多,查找时间复杂度接近 O(1)。

相关文章:

软考学习 数据结构 查找

1. 顺序查找(Sequential Search) 基本原理: 顺序查找是一种最简单、最直观的查找算法。它从数据集合的第一个元素开始,依次与目标元素进行比较,直到找到目标元素或遍历完所有元素为止。 适用条件: 适用…...

h264 视频流中添加目标检测的位置、类型信息到SEI帧

在 H.264 视频编码中,SEI(Supplemental Enhancement Information)消息用于传输额外的、非编码的数据,例如目标检测的信息。SEI 数据可以嵌入到 H.264 流中,以在解码过程中传递这些附加信息。 一、步骤 确定 SEI 类型&…...

大模型api谁家更便宜

1 openai 可点此链接查询价格:https://openai.com/api/pricing/ 2 百度 可点此链接查询价格:https://console.bce.baidu.com/qianfan/chargemanage/list 需要注意,百度千帆平台上还提供其他家的模型调用服务, 如llama, yi-34b等…...

代码随想录算法训练营第二十三天| 455. 分发饼干、376. 摆动序列、53. 最大子序和

今日内容 贪心理论基础Leetcode. 455 分发饼干Leetcode. 376 摆动序列Leetcode. 53 最大子序和 贪心理论基础 贪心算法的本质就是选择每一阶段的最优,达到全局上的最优。 贪心算法和之前学到的所有方法相比,它没有固定的使用套路,也没有固…...

react js 路由 Router

完整的项目,我已经上传了 资料链接 起因, 目的: 路由, 这部分很难。 原因是, 多个组件,进行交互,复杂度比较高。 我看的视频教程 1. 初步使用 安装: npm install react-router-dom 修改 index.js/ 或是 main.js 把 App, 用 BrowserRouter 包裹起来 2. Navigate 点击…...

AplPost使用

请求get 方法 1,添加token 2,填写get 的参数 2,post方法 把对象的形式直接复制到row里面 3,delete方法 可以直接后面拼接参数...

【Qt】Qt与Html网页进行数据交互

前言:此项目使用达梦数据库,以Qt制作服务器,Html制作网页客户端界面,可以通过任意浏览器访问。 1、Qt与网页进行数据交互 1.1、第一步:准备qwebchannel.js文件 直接在qt的安装路径里复制即可 1.2、第二步&#xf…...

教师节特辑:AI绘制的卡通人物,致敬最可爱的人‍

【编号:9】教师节到了,今天我要分享一组由AI绘制的教师节主题卡通人物插画,每一幅都充满了对老师的敬意和爱戴。让我们一起用这些可爱的卡通形象,向辛勤的园丁们致敬! 🎓【教师形象】 这…...

SprinBoot+Vue智慧农业专家远程指导系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…...

AI大模型行业专题报告:大模型发展迈入爆发期,开启AI新纪元

大规模语言模型(Large Language Models,LLM)泛指具有超大规模参数或者经过超大规模数据训练所得到的语言模型。与传统语言模型相比,大语言模型的构建过程涉及到更为复杂的训练方法,进而展现出了强大的自然语言理解能力…...

FLV 格式详解资料整理,关键帧格式解析写入库等等

FLV 是一种比较简单的视频封装格式。大致可以分为 FLV 文件头,Metadata元数据,然后一系列的音视频数据。 资料够多: FLV格式解析图 知乎用户 Linux服务器研究 画了一张格式解析图,比较全,但默认背景是白色&#xff…...

《深度学习》OpenCV 高阶 图像直方图、掩码图像 参数解析及案例实现

目录 一、图像直方图 1、什么是图像直方图 2、作用 1)分析图像的亮度分布 2)判断图像的对比度 3)检测图像的亮度和色彩偏移 4)图像增强和调整 5)阈值分割 3、举例 二、直方图用法 1、函数用法 2、参数解析…...

coredump-N: stack 消耗完之后,用户自定义信号处理有些问题 sigaltstack

https://mzhan017.blog.csdn.net/article/details/129401531 在上面一篇是关于stack耗尽的一个小程序例子。 https://www.man7.org/linux/man-pages/man2/sigaltstack.2.html 这里提到一个问题,就是如果栈被用光了,这个时候SIGSEGV的用户自定义的handler处理可能就没有空间进…...

数据库有关c语言

数据库的概念 SQL(Structured Query Language)是一种专门用来与数据库进行交互的编程语言,它允许用户查询、更新和管理关系型数据库中的数据。关系型数据库是基于表(Table)的数据库,其中表由行&#xff08…...

【网页播放器】播放自己喜欢的音乐

// 错误处理 window.onerror function(message, source, lineno, colno, error) {console.error("An error occurred:", message, "at", source, ":", lineno);return true; };// 检查 particlesJS 是否已定义 if (typeof particlesJS ! undefi…...

【第27章】Spring Cloud之适配Sentinel

文章目录 前言一、准备1. 引入依赖2. 配置控制台信息 二、定义资源1. Controller2. Service3. ServiceImpl 三、访问控制台1. 发起请求2. 访问控制台 总结 前言 Spring Cloud Alibaba 默认为 Sentinel 整合了 Servlet、RestTemplate、FeignClient 和 Spring WebFlux。Sentinel…...

怎么debug python

1、打开pycharm,新建一个python程序,命名为excel.py。 2、编写代码。 3、点击菜单栏中的“Run”,在下拉菜单中选择“debug excel.py”或者“Debug...”,这两个功能是一样的,都是调试功能。 4、调试快捷键:C…...

Java 递归

目录 1.A方法调用B方法,很容易理解! 2.递归:A方法调用A方法,就是自己调用自己! 3. 递归的优点: 4. 递归结构包括两个部分: 5. 递归的三个阶段 6. 递归的缺点&#…...

获取业务库的schema信息导出成数据字典

获取业务库的schema信息导出成数据字典 场景:需要获取业务库的schema信息导出成数据字典,以下为获取oracle与mysql数据库的schema信息语句 --获取oracle库schema信息 selecttt1.owner as t_owner,tt1.table_name,tt1.column_name,tt1.data_type,tt1.dat…...

力扣: 快乐数

文章目录 需求分析代码结尾 需求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 …...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...

离线语音识别方案分析

随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...