20年王道之数据结构笔记

20年王道之数据结构笔记

第一章绪论

本章内容了解为主,通过后边内容的学习自然而然会加深印象,无须沉迷于此。
数据结构解决两个问题:

  • 如何用程序代码将现实中问题给信息化
  • 如何用计算机高效地处理这些信息从而创造价值?

数据结构的基本概念

主要包含数据、数据元素、数据项、数据对象、数据结构、数据类型、抽象数据类型。

  • 数据

描述客观事物的符号,是计算机中可以操作的对象。数据是一个集合,能被计算机识别,并输入给计算机处理的符号集合。

  • 数据元素

组成数据的基本单位。例如原子,是化学世界的基本单位,但不是最小单位。

  • 数据项

组成数据元素的单位。例如电子,是原子的组成单位,在化学反应时,会发生电子转移。如上个例子,原子这个整体是化学反应的数据元素,电子是原子这个数据元素的数据项。

  • 数据对象

数据对象是性质相同的数据元素的集合,是数据的子集。
在不引起混淆的情况下,我们通常将数据对象简称为数据

  • 数据结构

不同数据元素之间不是独立的,存在某种关系,这些关系称为结构。那数据结构是什么?
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
这样接下来这个式子就很好理解了:
程序 = 数据结构 + 算法
数据结构指的就是信息(有特定关系的数据元素的集合),算法是处理这些信息的具体方法,所以这两者加起来就是程序。以前总望文生义,觉得数据结构是种关系,和算法加起来总觉得怪怪的~
在这里插入图片描述

数据结构的三要素

数据结构的三要素:逻辑结构、物理结构、数据的运算。

  • 逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。
主要分为集合结构线性结构(一对一)树状结构(一对多)图形结构(多对多)
逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适数据结构表示数据元素之间的逻辑关系。

  • 物理结构(存储结构)

物理结构:是指数据的逻辑结构在计算机中的存储形式。
因此很多书中也叫存储结构。
数据元素的存储结构形式有四种:顺序存储链式存储索引存储散列存储(又称Hash存储)
逻辑结构是面向问题的,物理结构是面向计算机的,其基本目的就是将数据及其逻辑结构存储到计算机的内存中。

数据的存储结构会影响存储空间分配的方便情况。 eg:有人想插队。(用非顺序存储)
数据的存储结构会影响对数据运算的速度。 eg:想找到排队的第三个人。(用顺序存储)

  • 数据的运算

数据的运算——施加在数据上的运算包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对物理结构的,指出运算的具体操作步骤。

算法

  • 算法的基本概念

算法的基本概念

算法效率的度量

  • 时间复杂度:T(n),T表示“Time”

推导过程中的结论和计算步骤

结论1:顺序执行的代码只会影响常数项,可以忽略。
结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可。
结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次。

①找到一个基本操作(最深层循环)
②分析该操作的执行次数x与问题规模n的关系,x = f(n)
③x的数量级O(x) 就是算法时间复杂度T(n)

常用技巧

加法规则:O(f(n)) + O(g(n)) = O( max{f(n), g(n)} )
乘法规则:O(f(n)) x O(g(n)) = O( f(n)xg(n) )
O(1) < O (log2n ) < O(n) < O(nlog2n) < O(n2) < O(2n) < O(n!) < O (nn) 口诀: "常对幂指阶"

三种复杂度

最好时间复杂度
最坏时间复杂度
平均时间复杂度:所有输入实例等概率出现的情况下,算法的期望运行时间。
只考虑上述两者即可,不考虑最好时间复杂度。

  • 空间复杂度:S(n),S表示“Space”

  • 变量定义开销

一般变量如:int i; int变量只占用4个字节,S(n) = 4,是个常数,根据加法规则,一般情况下我们忽略常数项
只需关注存储空间大小与问题规模n相关的变量,如:
数组a[n],空间开销S(n) = O(n),
二维数组b[n][n],空间开销S(n) = O(n2)。

  • 函数递归开销

具体分析

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值