图书目录

目录

第1章绪论/1

11算法/1

1.1.1算法的基本概念/1

1.1.2算法的表示/2

1.1.3算法的设计/4

12算法的分析评价/6

1.2.1时间复杂度分析/6

1.2.2时间复杂度分析举例/8

1.2.3空间复杂度分析/10

13数据结构/11

1.3.1数据与数据结构定义/11

1.3.2数据类型与数据抽象/15

1.3.3抽象数据类型/16

1.3.4数据结构和算法的关系/17

小结/18

习题/19

第2章Python编程基础/20

21Python数据类型/20

2.1.1常用数据类型/20

2.1.2变量、运算符和表达式/21

2.1.3内置数据类型的常见运算和操作/23

22Python控制结构/27

2.2.1顺序结构/27

2.2.2选择结构/28

2.2.3循环结构/30

23Python函数/34

2.3.1函数概述/34

2.3.2函数的声明和调用/34

2.3.3参数传递/36

2.3.4函数的返回值/38

2.3.5变量的作用域/38

2.3.6函数式编程/40

24Python面向对象编程/42

2.4.1面向对象程序设计/42

2.4.2类的定义和实例化/43

2.4.3属性/45

2.4.4方法/47

2.4.5类的继承/48

2.4.6类的特殊方法/50

2.4.7对象的引用、浅拷贝和深拷贝/54

25抽象数据类型面向对象实现/55

2.5.1抽象数据类型和面向对象方法/55

2.5.2有理数的抽象数据类型表示/55

2.5.3有理数抽象数据类型的Python语言实现/56

小结/58

习题/58

第3章线性表/63

31线性表的概念/63

3.1.1基本术语和概念/63

3.1.2线性表的操作/64

3.1.3线性表的实现基础/65

32顺序表/65

3.2.1顺序表的定义/65

3.2.2顺序表的基本实现/66

3.2.3顺序表例题/68

33单链表/69

3.3.1单链表的定义/69

3.3.2单链表的基本实现/70

3.3.3单链表基本操作的实现/72

3.3.4单链表例题/76

34链表的变形与操作/80

3.4.1带尾结点引用的单链表/80

3.4.2循环单链表/82

3.4.3双向链表/86

3.4.4不同结构链表总结/89

35有序表及其应用/90

3.5.1有序表的定义/90

3.5.2有序表例题/90

小结/92

习题/93

第4章字符串/98

41字符串的概念/98

4.1.1基本术语和概念/98

4.1.2串的基本操作/99

4.1.3Python中的字符串/100

4.1.4基本串操作例题/100

42字符串匹配算法/103

4.2.1字符串匹配/103

4.2.2朴素的串匹配算法/103

4.2.3无回溯串匹配算法(KMP算法)/105

4.2.4串模式匹配例题/110

小结/114

习题/114

第5章栈和队列/116

51栈的概念与实现/116

5.1.1栈的结构和操作特点/116

5.1.2栈的表示和实现/117

52栈的应用举例/121

5.2.1括号匹配问题/122

5.2.2后缀表达式求值/124

5.2.3从中缀表达式到后缀表达式的转换/126

53队列的概念与实现/129

5.3.1队列的结构特点与操作/129

5.3.2队列的表示和实现/130

54双端队列/134

小结/136

习题/137

第6章递归/142

61递归的定义/142

6.1.1基本概念/142

6.1.2简单递归操作例题/143

6.1.3汉诺塔问题/146

62递归的可视化/147

6.2.1递归执行过程/147

6.2.2递归过程可视化/147

6.2.3递归图形化展示/149

63回溯法/150

6.3.1回溯的概念/150

6.3.2组合问题/151

6.3.3回溯法例题/153

64动态规划初步/157

6.4.1动态规划的概念/157

6.4.2动态规划的应用/158

6.4.3动态规划例题/161

小结/162

习题/162

第7章二叉树和树/166

71树状结构基本概念/166

7.1.1树的定义和基本术语/166

7.1.2树状结构的描述/167

7.1.3二叉树的概念/168

7.1.4二叉树的性质/169

72二叉树的存储/171

7.2.1二叉树的顺序存储/171

7.2.2二叉树的链式存储/171

73二叉树的遍历及其实现/172

7.3.1二叉树按层次遍历的实现/173

7.3.2二叉树深度优先遍历的递归实现/175

7.3.3二叉树深度优先遍历的非递归实现/179

74二叉树遍历算法的应用/180

75优先队列与堆/188

7.5.1优先队列的概念及应用/188

7.5.2堆的概念及实现/190

76哈夫曼树/195

7.6.1基本概念/195

7.6.2Huffman树的构造/196

7.6.3最优前缀编码/198

77树和森林的存储和遍历 /199

7.7.1树和森林的遍历/199

7.7.2树的存储表示/200

7.7.3树的遍历算法实现/204

小结/207

习题/208

第8章图及其算法/213

81图的概念/213

8.1.1基本术语和概念/213

8.1.2其他术语和概念/214

82图的表示与实现/216

8.2.1邻接矩阵/216

8.2.2邻接表/217

8.2.3图表示的Python实现/218

83图的遍历及其应用/223

8.3.1深度优先遍历图/223

8.3.2广度优先遍历图/225

8.3.3图遍历算法的简单应用/226

8.3.4图遍历算法的高阶应用/228

84拓扑排序/234

85并查集/236

86连通网的最小生成树/242

87最短路径问题/246

8.7.1单源最短路径的Dijkstra算法/247

8.7.2求解任意顶点间最短路径的Floyd算法/248

小结/249

习题/250

第9章排序和查找/255

91查找/255

9.1.1基本术语和概念/255

9.1.2顺序查找/256

9.1.3二分查找/258

92排序/263

9.2.1基本术语和概念/263

9.2.2选择排序/265

9.2.3冒泡排序/267

9.2.4插入排序/269

9.2.5希尔排序/273

9.2.6归并排序/275

9.2.7快速排序/278

小结/280

习题/280

附录ALeetCode网站在线编程说明/283

参考文献/285