Skip to content

Commit 48bffb3

Browse files
committed
update datastruct algorithm
1 parent 893a42a commit 48bffb3

9 files changed

Lines changed: 2093 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
author: xnzone
3+
title: 数据结构与算法
4+
date: 2023-02-22 10:04:00
5+
image: https://s2.loli.net/2025/09/24/QCDLM3PdlaS4jgv.png
6+
cover: true
7+
weight: 9
8+
tags: ["王道408", "数据结构", "算法"]
9+
---
10+
11+
学习资料[数据结构与算法分析C++描述](https://book.douban.com/subject/1909336/)
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
author: xnzone
3+
title: 绪论
4+
date: 2023-02-22 10:04:00
5+
image: https://s2.loli.net/2025/09/24/QCDLM3PdlaS4jgv.png
6+
cover: false
7+
weight: 901
8+
tags: ["数据结构", "算法"]
9+
---
10+
11+
## 数据结构三要素
12+
- 逻辑结构
13+
- 数据的运算
14+
- 物理结构(存储结构)
15+
16+
### 逻辑结构
17+
- 集合结构:各个元素同属一个集合,没有其他关系
18+
- 线性结构:一对一,顺序关系
19+
- 树状结构:一对多
20+
- 图状结构:多对多
21+
22+
### 数据运算
23+
-
24+
-
25+
-
26+
-
27+
28+
### 物理结构
29+
- 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的相邻关系来体现
30+
- 链式存储:逻辑上相邻的元素,在物理位置上可以不相邻,借助指针来表示元素之间的关系
31+
- 索引存储:在存储元素信息的同时,还建立附加索引表。索引表中的每项成为索引项,索引项一般是关键字,地址等
32+
- 散列存储:根据元素关键字直接计算出该元素的存储地址,又称哈希存储
33+
34+
### 总结
35+
- 顺序存储,物理上必须是连续的;非顺序存储,物理上可以是离散的
36+
- 数据结构会影响存储空间分配方便程度
37+
- 存储结构会影响对数据运算的速度
38+
- 运算的定义是针对逻辑结构的(运算的功能),运算的实现是针对存储结构的(运算的具体步骤)
39+
40+
41+
## 算法
42+
43+
### 什么是算法
44+
- 程序 = 数据结构 + 算法
45+
- 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作
46+
47+
### 算法的特征
48+
- 有穷性:必须在有穷步之后结束,每一步都可在有穷时间内完成
49+
- 确定性:每条指令必须有确切的含义,相同的输入只能得到相同的输出
50+
- 可行性:描述的操作都可以通过已经实现的基本运算执行有限次来实现
51+
- 输入:有零个或多个输入
52+
- 输出:有一个或多个输出
53+
54+
### 好算法的特质
55+
- 正确性:正确解决问题
56+
- 可读性:良好的可读性
57+
- 健壮性:非法数据输入时,不会产生莫名其妙的输出
58+
- 高效率:时间复杂度低,空间复杂度低
59+
60+
## 时间复杂度
61+
62+
### 定义
63+
事前预估算法时间开销`T(n)`与问题规模`n`的关系(T表示time)
64+
65+
### 规则
66+
- 加法规则:多项相加,只保留最高阶的项,且系数为1
67+
- 乘法规则:多项相乘,都保留
68+
- 算法好坏:常对幂指阶
69+
- 数量级:只考虑循环内最深层嵌套的部分
70+
71+
### 分类
72+
- 最坏时间复杂度
73+
- 平均时间复杂度
74+
- 最好时间复杂度
75+
76+
一般只考虑最坏和平均复杂度
77+
78+
## 空间复杂度
79+
### 定义
80+
空间开销`S(n)`与问题规模`n`之间的关系
81+
82+
### 规则
83+
- 只需关注存储空间大小与问题规模相关的变量
84+
- 加法规则、乘法规则、算法好坏与时间复杂度一样
85+
- 递归调用情况:空间复杂度=递归调用的深度

0 commit comments

Comments
 (0)