我的第一本算法书 第一章

1.1

决定数据顺序和位置关系的是数据结构

电话簿的数据结构

按获取顺序排序 按拼音顺序排序 添加简单 查询麻烦 查询简单 添加麻烦

两者结合

分别使用不同的表存储不同的首字母, 再将同一张表中的数据按获取顺序进行排序

选择适合的数据结构可以提高内存的利用率

1.2 链表

  • 线性排列, 数据的添加和删除方便, 访问消耗时间
  • 链表的每个数据都都有一个指针且这个指针指向下一个数据的内存地址
  • 分散存储于内存中,无须在连续空间内
  • 链表要访问数据, 需要按照指针方向顺序访问
  • 添加数据改变指针前后指向
  • 删除改变指针指向

访问:O(n) 添加.删除:O(1)

补充:

1.3 数组

  • 也是线性排列的数据结构. 访问简单, 添加和删除费时
  • 数组存储在连续空间内
  • 数组中的每个数据可以根据下标算出, 就可以直接访问目标数据 (随机访问)
  • 在数组中间添加或删除元素需要将后面的元素逐个移动再写入需要添加或删除的数据

访问O(1) 添加.删除O(n)

补充:

访问 添加 删除 链表 慢 快 快 数组 快 慢 慢

1.4 栈

  • 线性排列
  • 后进先出(Last In Fist Out, LIFO) 入栈(push) 出栈(pop)

应用场景:只需要访问最新数据. 深度优先搜索算法

1.5 队列

  • 线性排列
  • 先进先出(First In First Out, FIFO) 入队 出队

应用场景:先来的数据先处理. 广度优先搜索算法

1.6 哈希表

  • 键值组成的数据 (键, 数据的标识符. 值, 数据的内容)
  • 哈希函数计算变量值, 再将求余数. 得到的结果作为数组的下标存放
  • 当发生哈希冲突时, 在数组下标的同一位置使用链表继续存储新的数据

开放地址法:发生哈希冲突时, 即刻计算一个候选地址, 如果还有冲突就再次计算另一个候选地址, 直到有空地址为止.

线性探测法

1.7 堆

  • 图的树形结构, 用于优先队列(priority queues) 广度优先算法
  • 子结点一定大于父结点. 最小值被存在顶端, 添加数据时, 新数据在最下面一行的左侧. 当下一行没有多余空间, 就再往下另起一行, 把数据加在这一行的最左端.

  • 父结点大于子结点就要交换两者的位置

  • 堆取出的是最上面的数据(最小的), 最后的数据移动到最顶端, 然后再次排序
  • 优先队列:自由添加数据, 取出数据要从最小值开始按顺序取出
  • 堆的树形结构中, 每个顶点成为 结点 node
  • 每个结点最多两个子结点. 排列从上到下, 从左到右

取出O(1) 重构树O(logₙ) 添加树O(logₙ)

应用场景:狄克斯特拉算法

1.8 二叉查找树

  • 图的树形结构 广度优先搜索
  • 每个结点的值均大于其左子树上任意一个结点的值
  • 每个结点的值均小于其右子树上任意一个结点的值
  • 删除的结点没有子结点, 直接删掉该结点
  • 删除的结点只有一个子结点, 那么先删掉目标结点, 然后把子结点移到被删除结点的位置上
  • 如果需要删除的结点有两个子结点, 那么先删掉目标结点, 然后在被删除结点的左子树中寻找最大结点

二叉查找树当作是二分查找算法思想的树形结构体现
树形状较为均衡 O(logₙ) 树形状朝单侧纵向延伸 O(n)
把子结点数扩展为 m(m 为预先设定好的常数)。像这种子结点数可以自由设定,并且形状均衡的树便是 B 树

Original: https://www.cnblogs.com/turbospace/p/16637739.html
Author: 鲲特牌
Title: 我的第一本算法书 第一章

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599574/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 数据库中异常与隔离级别

    数据库相对于其它存储软件一个核心的特征是它支持事务,所谓事务的ACID就是原子性,一致性,隔离性和持久性。其中原子性,一致性,持久性更多是关注单个事务本身,比如,原子性要求事务中的…

    数据库 2023年6月9日
    085
  • 牛客SQL刷题第一趴——非技术入门基础篇

    id device_id gender age university province 1 2138 male 21 北京大学 Beijing 2 3214 male 复旦大学 S…

    数据库 2023年5月24日
    0113
  • .NET nhibernate 添加新的表运行报is not mapped的问题

    最后在修改一个.NET nhibernate的项目,按照原来的表添加了一个实体和一个hbm.xml的配置文件,写好所有业务代码以后运行报以下错误 NoAuthorizationSi…

    数据库 2023年6月9日
    0104
  • Jmeter性能测试场景的创建和运行

    目录 性能测试场景的分析 项目背景 Jmeter指标 性能测试场景的设计以及准备 * 性能测试的总结 性能测试场景的分析 项目背景 ​ 实际工作中,我们拿到一个项目一般来说都会是项…

    数据库 2023年6月6日
    095
  • MySQL中的触发器

    1.定义: 触发器和存储过程相似,都是嵌入到 MySQL 中的一段程序。触发器是由事件来触发某个操作。当数据库执行这些事件时,就会激活触发器来执行相应的操作。这些事件称为触发条件,…

    数据库 2023年6月16日
    0116
  • 新版 google 谷歌浏览器跨域问题

    新版本的firefox火狐浏览器限制了 127.0.0.1 本地部署测试的时候,用火狐浏览器需要把 前端的 后台中的服务地址改成 http://localhost:8081 浏览器…

    数据库 2023年6月6日
    0101
  • sarama Kafka客户端生产者与消费者梳理

    生产者 sarama 库提供了同步生产者和异步生产者。 SyncProducer 是在 AsyncProducer 基础上加以条件限制实现的。 type SyncProducer …

    数据库 2023年6月16日
    073
  • mysql基础语法_曾佳豪

    一、构建数据库、表和数据类型 [En] I. Building databases, tables and data types 1.建库 create database if n…

    数据库 2023年5月24日
    0101
  • MySQL学习笔记(七)–Index Merge

    什么是Index Merge The Index Merge access method retrieves rows with multiple range scans and …

    数据库 2023年6月16日
    086
  • 生产数据库主键超出限制解决方案

    不说那种建表的时候 设置好主键格式 的 解决方案. 事后诸葛啊. 谁都会 不靠谱方案1改主键表结构. 费时! 主键已经超长了.说明 数据量相当大. 改表结构的时间成本你能等得起吗方…

    数据库 2023年6月14日
    094
  • ES6中的模块化

    历史上,JavaScript一直没有自己模块体系(module),无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言如java、python等都具备这项功能,…

    数据库 2023年6月6日
    087
  • 绘制几何图形

    《零基础学Java》 绘制几何图形Java可以 分别使用 Graphics 和 Graphics2D 绘制图形, Graphics类 使用不同的方法绘制不同的图形(drawLine…

    数据库 2023年6月16日
    0110
  • Debezium的基本使用(以MySQL为例)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 一、Debezium介绍 摘自官…

    数据库 2023年5月24日
    0114
  • 华为云操作记录——JavaWeb 环境搭建

    华为云操作记录 创建用户 新建用户 sudo adduser weirwei 添加免密 root 权限 sudo vim /etc/sudoers 添加 root 权限 sudo …

    数据库 2023年6月9日
    089
  • Mysql终端Terminal操作

    datebase管理 1.创建数据库-create 语法:create database 数据库名 character set 编码 注意:默认会存在四个数据库,其数据库中存储的是…

    数据库 2023年6月14日
    071
  • MySQL MHA 运行状态监控

    一 项目描述 1.1 背景 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failo…

    数据库 2023年5月24日
    0132
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球