《数据结构与算法:Python语言实现》是由机械工业出版社出版的一本关于数据结构方面的书籍,作者是迈克尔、T.、古德里奇,主要介绍了关于数据结构、算法、Python语言方面的知识内容,目前在数据结构类书籍综合评分为:7.9分。
书籍介绍
这书选用Python語言详细介绍数据结构和优化算法,包含其设计构思、剖析和执行。这书源码简约、确立,面向对象编程的见解围绕自始至终,根据承继*底限地提升编码器重,一起突显不一样抽象数据类型和优化算法中间的不同点。
麦克尔·T. 古德里奇(Michael T. Goodrich) 加州大学凯里欧文校区电子信息科学系专家教授,以前是约翰·霍普金斯大学专家教授。他是AAAS、ACM和IEEE会士,曾喜获IEEE电子计算机研究会技术性成就奖和ACM非凡服务奖等。
罗伯托·塔马西亚(Roberto Tamassia) 布朗大学电子信息科学系专家教授及院主任,担任几何图形数据中心负责人。他是AAAS、ACM和IEEE会士,曾喜获IEEE电子计算机研究会技术性成就奖。
麦克尔·H.戈德瓦瑟(Michael H. Goldwasser) 圣路易斯大学数学系和电子信息科学系专家教授,担任电子信息科学新项目负责人,以前曾在纽约罗耀拉高校执教。
目录
- 译者序
- 前言
- 致谢
- 作者简介
- 第1章 Python入门 1
- 1.1 Python概述 1
- 1.1.1 Python解释器 1
- 1.1.2 Python程序预览 1
- 1.2 Python对象 2
- 1.2.1 标识符、对象和赋值语句 2
- 1.2.2 创建和使用对象 4
- 1.2.3 Python的内置类 4
- 1.3 表达式、运算符和优先级 8
- 1.4 控制流程 12
- 1.4.1 条件语句 12
- 1.4.2 循环语句 14
- 1.5 函数 16
- 1.5.1 信息传递 17
- 1.5.2 Python的内置函数 19
- 1.6 简单的输入和输出 20
- 1.6.1 控制台输入和输出 21
- 1.6.2 文件 21
- 1.7 异常处理 22
- 1.7.1 抛出异常 23
- 1.7.2 捕捉异常 24
- 1.8 迭代器和生成器 26
- 1.9 Python的其他便利特点 28
- 1.9.1 条件表达式 29
- 1.9.2 解析语法 29
- 1.9.3 序列类型的打包和解包 30
- 1.10 作用域和命名空间 31
- 1.11 模块和import语句 32
- 1.12 练习 34
- 扩展阅读 36
- 第2章 面向对象编程 37
- 2.1 目标、原则和模式 37
- 2.1.1 面向对象的设计目标 37
- 2.1.2 面向对象的设计原则 38
- 2.1.3 设计模式 39
- 2.2 软件开发 40
- 2.2.1 设计 40
- 2.2.2 伪代码 41
- 2.2.3 编码风格和文档 42
- 2.2.4 测试和调试 43
- 2.3 类定义 44
- 2.3.1 例子:CreditCard类 45
- 2.3.2 运算符重载和Python的特殊方法 48
- 2.3.3 例子:多维向量类 50
- 2.3.4 迭代器 51
- 2.3.5 例子:Range类 52
- 2.4 继承 53
- 2.4.1 扩展CreditCard类 54
- 2.4.2 数列的层次图 57
- 2.4.3 抽象基类 60
- 2.5 命名空间和面向对象 62
- 2.5.1 实例和类命名空间 62
- 2.5.2 名称解析和动态调度 65
- 2.6 深拷贝和浅拷贝 65
- 2.7 练习 67
- 扩展阅读 70
- 第3章 算法分析 71
- 3.1 实验研究 71
- 3.2 本书使用的7种函数 74
- 3.2.1 常数函数 74
- 3.2.2 对数函数 74
- 3.2.3 线性函数 75
- 3.2.4 n-log-n函数 75
- 3.2.5 二次函数 76
- 3.2.6 三次函数和其他多项式 77
- 3.2.7 指数函数 77
- 3.2.8 比较增长率 79
- 3.3 渐近分析 79
- 3.3.1 大O符号 80
- 3.3.2 比较分析 82
- 3.3.3 算法分析示例 84
- 3.4 简单的证明技术 89
- 3.4.1 示例 89
- 3.4.2 反证法 89
- 3.4.3 归纳和循环不变量 90
- 3.5 练习 91
- 扩展阅读 95
- 第4章 递归 96
- 4.1 说明性的例子 96
- 4.1.1 阶乘函数 96
- 4.1.2 绘制英式标尺 97
- 4.1.3 二分查找 99
- 4.1.4 文件系统 101
- 4.2 分析递归算法 104
- 4.3 递归算法的不足 106
- 4.4 递归的其他例子 109
- 4.4.1 线性递归 109
- 4.4.2 二路递归 112
- 4.4.3 多重递归 113
- 4.5 设计递归算法 114
- 4.6 消除尾递归 115
- 4.7 练习 116
- 扩展阅读 118
- 第5章 基于数组的序列 119
- 5.1 Python序列类型 119
- 5.2 低层次数组 119
- 5.2.1 引用数组 121
- 5.2.2 Python中的紧凑数组 122
- 5.3 动态数组和摊销 124
- 5.3.1 实现动态数组 126
- 5.3.2 动态数组的摊销分析 127
- 5.3.3 Python列表类 130
- 5.4 Python序列类型的效率 130
- 5.4.1 Python的列表和元组类 130
- 5.4.2 Python的字符串类 134
- 5.5 使用基于数组的序列 136
- 5.5.1 为游戏存储高分 136
- 5.5.2 为序列排序 138
- 5.5.3 简单密码技术 140
- 5.6 多维数据集 142
- 5.7 练习 145
- 扩展阅读 147
- 第6章 栈、队列和双端队列 148
- 6.1 栈 148
- 6.1.1 栈的抽象数据类型 148
- 6.1.2 简单的基于数组的栈实现 149
- 6.1.3 使用栈实现数据的逆置 152
- 6.1.4 括号和HTML标记匹配 152
- 6.2 队列 155
- 6.2.1 队列的抽象数据类型 155
- 6.2.2 基于数组的队列实现 156
- 6.3 双端队列 160
- 6.3.1 双端队列的抽象数据类型 160
- 6.3.2 使用环形数组实现双端队列 161
- 6.3.3 Python collections模块中的双端队列 162
- 6.4 练习 163
- 扩展阅读 165
- 第7章 链表 166
- 7.1 单向链表 166
- 7.1.1 用单向链表实现栈 169
- 7.1.2 用单向链表实现队列 171
- 7.2 循环链表 173
- 7.2.1 轮转调度 173
- 7.2.2 用循环链表实现队列 174
- 7.3 双向链表 175
- 7.3.1 双向链表的基本实现 177
- 7.3.2 用双向链表实现双端队列 179
- 7.4 位置列表的抽象数据类型 180
- 7.4.1 含位置信息的列表抽象数据类型 182
- 7.4.2 双向链表实现 183
- 7.5 位置列表的排序 186
- 7.6 案例研究:维护访问频率 186
- 7.6.1 使用有序表 187
- 7.6.2 启发式动态调整列表 188
- 7.7 基于链接的序列与基于数组的序列 190
- 7.8 练习 192
- 扩展阅读 195
- 第8章 树 196
- 8.1 树的基本概念 196
- 8.1.1 树的定义和属性 196
- 8.1.2 树的抽象数据类型 199
- 8.1.3 计算深度和高度 201
- 8.2 二叉树 203
- 8.2.1 二叉树的抽象数据类型 204
- 8.2.2 二叉树的属性 206
- 8.3 树的实现 207
- 8.3.1 二叉树的链式存储结构 207
- 8.3.2 基于数组表示的二叉树 212
- 8.3.3 一般树的链式存储结构 214
- 8.4 树的遍历算法 214
- 8.4.1 树的先序和后序遍历 214
- 8.4.2 树的广度优先遍历 216
- 8.4.3 二叉树的中