DS冲刺整理做题定理(四)查找与排序

        最后一期更新,考试之前应该不会再出该专题了,之后有时间会出一些有关链表的代码题,其他章节只挑选重点的总结~


一.查找

1.顺序查找

        又被称为线性查找,对顺序表和链表都使用~基本思想是从某一端开始,逐个检查关键字是否满足给定的条件~

2.折半查找

        适用于有序的顺序表:首先将给定值key与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置,若不等,则所需查找的元素只能在中间元素以外的前半不分或者后半部分,然后在缩小的范围内继续进行同样的查找,如此重复直到找到为止 

3.分块查找

        分块查找又称为索引顺序查找,将查找表分为若干个小的子块,块内元素可以无序,但块之间是有序的~即将查找的过程分为两步:第一步是在索引表猴子那个确定待查记录所在的块,第二步则是在快内顺序查找~

4.二叉排序树(BST)

        又被称为二叉查找树,若左子树非空,则左子树上所有的结点的值均小于根节点的值,而右子树则均大于,这样在查找节点时可以达到类似分块查找的效果~

5.平衡二叉树

        AVL树,为了防止树的高度增长过快而降低二叉排序树的性能,规定在插入和删除二叉树结点时,要保证任意结点的左右子树高度差的绝对值不超过1,将这样的二叉排序树称为平衡二叉树,简称平衡树~

6.散列表

  • 散列函数:将查找表中的关键字映射成该关键字对应位置地址的函数
  • 散列冲突:将2个或更多的关键字映射再同一地址
  • 哈希函数的种类:直接定址、除留取余、数字分析、平方取中
  • 处理冲突的方法:开放定址、拉链法(链接到同一个位置上的链表)
  • 要会计算平均查找长度ASL~

二.排序

1.插入排序

  • 直接插入:将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。
  • 折半插入:先折半查找出元素待插入的位置,再统一地一定待插入位置之后的所有元素
  • 希尔排序:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。

2.交换排序

  • 冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
  • 快速排序:快速排序采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素pivot,利用pivot将待排序的序列分成两部分,前面部分元素均小于或等于基准元素,后面部分均大于或等于基准元素,然后采用递归的方法分别对前后两部分重复上述操作,直到将无序序列排列成有序序列。

3.选择排序

  • 简单选择:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
  • 堆排序:利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

4.归并排序

        将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

5.基数排序

        它是通过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

6.外部排序

  • 多路归并排序:多路归并是外部排序(External Sort)的基础,实现也比较简单,和最简单的归并排序中的二路归并是基本一样的,只不过路数是浮动的k(不是重点~)

7.对比~

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

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

相关文章

GZ015 机器人系统集成应用技术样题1-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题1 选手须知: 本任务书共 25页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…

分布式微服务架构日志调用链路跟踪-traceId

分布式微服务架构日志调用链路跟踪-traceId 在ELK日志集成平台里(日志的写入,收集,跟踪,搜索,分析) 背景知识 在xxx(博主之前的公司),每个前端请求里面,都会在request的header区携带一个traceId 随机数值,用来跟踪在后端的调用链路栈打印.通过ES收集的日志数据,在ELK日志集成…

idea__SpringBoot微服务12——整合Mybatis框架(新依赖)(新注解)

整合Mybatis框架 完整项目地址:一、创建一个新的项目,导入mybatis依赖,lombok依赖。二、idea内置数据库管理工具连接数据库。三、编写实体类。四、编写Mapper接口。(新注解)五、编写Mapper.XML。六、编写数据库连接文件…

OpenCV中的格式转换

目录 1. 前言2. 采集到播放数据流的走向3. OpenCV中的格式转换3.1 RGB3.2 YUV3.2.1 YUV420{P}3.2.2 YUV420SP 4 简单应用5. 关联文章 1. 前言 实际音视频开发过程芯片是做了硬件加速的,主要涉及到视频编解码。二次开发过程中需要对SDK做一定的封装使用才行。 写这…

JMeter安装RabbitMQ测试插件

整体流程如下:先下载AMQP插件源码,可以通过antivy在本地编译成jar包,再将jar包导入JMeter目录下,重启JMeter生效。 Apache Ant 是一个基于 Java 的构建工具。Ant 可用于自动化构建和部署 Java 应用程序,使开发人员更轻…

【算法】动态规划(dp问题),持续更新

文章目录 0. 动态规划🎯五个思考步骤 和 注意事项🎯技巧优化思路 1. 子数组系列1.1 乘积为正数的最长子数组长度1.2 等差数列划分1.3 最长湍流子数组1.4 单词拆分1.5 环绕字符串中的子字符串 0. 动态规划 介绍本篇之前,我想先用人话叙述一般…

MYSQl基础操作命令合集与详解

MySQL入门 先来个总结 SQL语言分类 DDL(Data Definition Language) - 数据定义语言: 用于定义和管理数据库结构,包括创建、修改和删除数据库对象。 示例:CREATE, ALTER, DROP等语句。 DML(Data Manipulation Lan…

常见箱包五金ERP有哪些?箱包五金ERP哪个好用

不同的箱包五金有不同的营销渠道和经营模式,而每一个营销渠道的商品信息维护流程和方式也不尽相同。另外,箱包五金价格制定、品质检验、产品种类、物料编码、批号追踪等环节的管理也比较繁琐。 近些年数字科技也被广泛的应用于箱包五金领域,…

Module ‘app‘: platform ‘android-33‘ not found.

目录 一、报错信息 二、解决方法 一、报错信息 Module app: platform android-33 not found. 检查你的应用程序的build.gradle文件中的targetSdkVersion和compileSdkVersion是否正确设置为已安装的Android SDK版本。 确保你的Android Studio已正确安装并配置了所需的Android …

spring-cloud-starter-gateway-mvc的网关实现

一 概括 最近,我也一直在使用SpringCloudGateway开发我们自己的网关产品。根据我对这份正式文件的理解,内容如下: SpringCloudGateway的默认底层依赖项是SpringWebflux。我们知道Spring Webflux是异步和响应式编程,并且编程范式…

TCP为什么可靠之“拥塞控制”

拥塞控制是对网络层面的控制,主要是为了避免发送方发送过多的数据导致网络阻塞,以及出现网络阻塞时能够调整数据发送速率,达到对网络阻塞的一个控制。 拥塞窗口 拥塞窗口cwnd,是发送方维护的一个状态变量,会根据网络…

Windows 11上边两个空格导致我多熬了1个多小时

将图中的文件路径复制,然后到文件管理器里边去搜索。 发现找不到,可是明明就在这里啊。 我百思不得其解,还以为是IDEA出了问题,我只能是重新启动项目,结果还是告诉我找不到文件。 要是同一个目录下已经有一个名为a…

什么是CORS?如何在PHP中处理CORS问题?

CORS(Cross-Origin Resource Sharing)是一种机制,它使用额外的 HTTP 头来告诉浏览器是否允许在 Web 页面上访问来自不同域的资源。在默认情况下,浏览器限制跨域请求,以防止潜在的安全风险。CORS 允许服务器指定哪些源&…

【设计模式--行为型--中介者模式】

设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式 定义 又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变它们之间的交互。 结构 抽象中介者角色…

React中简单实现路由守卫(主要演示其原理)

路由守卫在后台管理系统两种经典的跳转情况: 如果访问的是登录页面, 并且有token, 跳转到首页 如果访问的不是登录页面,并且没有token, 跳转到登录页 其余的都可以正常放行 下面简单实现React路由守卫功能&…

Python学习之复习MySQL-Day2(DML)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧!DML介绍添加数据给指定字段添加数据给全部字段添加数据给指定字段添加多条数据给全部字段添加多条数据 修改数据修改指定条件的记录的数据修改全部记录的数据 删除数据 文章声明⭐⭐⭐ 该文章为我(有编程语言…

矩阵理论及其应用邱启荣习题3.5题解

(1) P ( − 1 0 1 − 1 − 1 2 1 1 − 1 ) \begin{pmatrix} -1 & 0&1 \\ -1 & -1&2\\1&1&-1 \end{pmatrix} ​−1−11​0−11​12−1​ ​ A ( 1 0 1 1 1 0 − 1 2 1 ) \begin{pmatrix} 1 & 0&1 \\ 1 & 1&0\\-1&2&1 \end{pmat…

MySQL5.7忘记root密码

1)停止mysql服务 systemctl stop mysqld2)跳过权限验证启动mysql mysqld --skip-grant-tables --userroot3)新开一个shell客户端,直接输入mysql回车就能登陆 [rootlocalhost ~]# mysql Welcome to the MySQL monitor. Commands…

如何培养孩子的自信心

当谈论培养孩子的自信心时,许多家长可能会感到困惑。自信心是一个孩子成长过程中非常重要的品质,它可以帮助孩子在面对挑战时更加勇敢和坚定。那么,如何培养孩子的自信心呢?以下是一些建议,希望能对您有所帮助。 鼓励孩…

git checkout进行更改分支

git clone https://gitee.com/yaleguo1/minit-learning-demo.git下载代码。 cd minit-learning-demo/进入目录里边。 ls -l看一下当前分支的内容。 git checkout geek_chapter02更改分支到geek_chapter02。 ls -l看一下目录里边的内容。