《大话数据结构 》阅读笔记 1-4章

第一张 数据结构

1.数据的逻辑结构、存储结构和操作关系
2.数据其实就是符号,可以输入到计算机里,也可以被计算机程序处理(而声音、图像和视频可以通过编码的手段变成字符数据)

3.数据结构:相互之间存在一种或多种关系的数据元素的集合

4.数据结构——逻辑结构和物理结构

逻辑结构

(1)集合结构:所有元素平等地属于一个集合
(2)线性结构:一对一
(3)树形结构:一对多
(4)图形结构:多对多

物理结构(存储结构)【将数据和逻辑关系存储到计算机内存中)

(1)顺序存储
(2)链式存储

第二章 算法

1.算法的特性:输入、输出、有穷性(自动结束不会出现无限循环)、确定性(只有唯一结构)、可行性
2.算法设计的要求:正确性、可读性、健壮性、时间效率高和存储量低

3.算法效率的度量方法

事前分析估算方法:在计算机程序编制前,依据统计方法对算法进行估算。
经过分析, 我们发现, 一个用高级程序语言编写的程序在计算机上运行时所消耗
的时间取决于下列因素
1. 算法采用的策略、方法。
2 . 编译产生的代码质量。
3 . 问题的输入规模。
4. 机器度
5. 行度

============================
4.计算时间复杂度
显然,由此算法时间复杂度的定义可知,**我们的三个求和算法的时间复杂度分别
为O(叶, O(刀, O(nη。我们分别给官们取了非官方的名称, 0 (1) 叫常数阶、O(n) 叫线
性阶、O(n 2) 叫平方阶**

常用的时间复杂度所耗费的时间从小到大依次是:
0(1) < O(logn) < O(n) < O(nlogn) < 0(n2
) < 0(n3
) < 0(2” ) < O(n!) < O(n”)

5.空间复杂度
算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公
式记作: S(o)= O(f(o)) ,其中, 0 为问题的规模, f(n)为语句关于n 所占存储空间的
函数。

第三章 线性表

1.list(有限序列)
2.”数组的长度”和”续性表的长度”
**数组的长度是存放线性亵的存储空间的长度,存储分配后这个量是一般是不变
的。有** 一般高级语言, 比如C 、C++都可以用编程手段实现动态分配数组,不过这会带来性能上的损耗。
**线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,
这个量是变化的。**
在任意时刻,线性表的长度应该小于等于数组的长度。
list中插入元素

3.链式结构中,除了要存数据元素信息外, 还要存储它的
后继元素的存储地址。

存储数据元素信息的域称为数据域, 把存储直接后
继位置的域称为指针域。指针域中存储的信息称做指针或链。这两部分信息组成数据元素ai 的存储映像,称为结点(Node) 。

第四章 栈与队列

1.后进先出的栈(仅仅在表尾进行插入和删除)
栈顶(表尾) 栈底
2.栈的链式存储结构,简称为链钱。
3.栈的应用:递归

写递归程序最怕的就是陷入永不结束的无穷递归中, 所以, 每个递归定义
必须至少有一个条件,满足时递归不再进行,即不再引用自身而是返回值退出。

选代和递归的区别是:迭代使用的是循环结构,递归使用的是选择结构。递归能使程序的结构更清晰、更简洁、更容易让人理
解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会耗费大量
的时间和内存。选代则不需要反复调用函数和占用额外的内存。

4.队列:一端插入(队尾)一端删除(队头)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值