资料分享:送你一本《数据结构与算法:Python语言描述》电子书!

下图为 TIOBE 3月编程语言排行榜。

TIOBE排行榜

从榜单来看,曾经铁打的 Java、C、C++ 局势,早已在数月前被 Python 的闯入而打破。究其根由,并非是 C++ 的应用领域正在逐渐缩减,而是随着人工智能、机器学习的崛起,适用于该领域的 Python 才会水涨船高,带起了市场份额,而且这种份额有扩大的趋势。

所以,学习 Python 也就变成对我们的一个新要求。要想深入的了解一门语言最好的方式就是利用这门语言去定义结构,故在网上找到这本电子书与大家分享。


目录

前言

第1章 绪论

  • 1.1计算机问题求解
  • 程序开发过程
  • 一个简单例子
  • 1.2 问题求解:交叉路口的红绿灯安排
  • 问题分析和严格化
  • 图的顶点分组和算法
  • 算法的精化和Python描述
  • 讨论
  • 1.3 算法和算法分析
  • 问题、问题实例和算法
  • 算法的代价及其度量
  • 算法分析
  • Python程序的计算代价(复杂度)
  • 1.4 数据结构
  • 数据结构及其分类
  • 计算机内存对象表示
  • Python对象和数据结构
  • 练习

第2章 抽象数据类型和Python类

  • 2.1 抽象数据类型
  • 数据类型和数据构造
  • 抽象数据类型的概念
  • 抽象数据类型的描述
  • 2.2 Python的类
  • 有理数类
  • 类定义进阶
  • 本书采用的ADT描述形式
  • 2.3 类的定义和使用
  • 类的基本定义和使用
  • 实例对象:初始化和使用
  • 几点说明
  • 继承
  • 2.4 Python异常
  • 异常类和自定义异常
  • 异常的传播和捕捉
  • 内置的标准异常类
  • 2.5 类定义实例:学校人事管理系统中的类
  • 问题分析和设计
  • 人事记录类的实现
  • 讨论
  • 本章总结
  • 练习

第3章线性表

  • 3.1 线性表的概念和表抽象数据类型
  • 表的概念和性质
  • 表抽象数据类型
  • 线性表的实现:基本考虑
  • 3.2 顺序表的实现
  • 基本实现方式
  • 顺序表基本操作的实现
  • 顺序表的结构
  • Python的list
  • 顺序表的简单总结
  • 3.3 链接表
  • 线性表的基本需要和链接表
  • 单链表
  • 单链表类的实现
  • 3.4 链表的变形和操作
  • 单链表的简单变形
  • 循环单链表
  • 双链表
  • 两个链表操作
  • 不同链表的简单总结
  • 3.5 表的应用
  • Josephus问题和基于“数组”概念的解法
  • 基于顺序表的解
  • 基于循环单链表的解
  • 本章总结
  • 练习

第4章 字符串

  • 4.1 字符集、字符串和字符串操作
  • 字符串的相关概念
  • 字符串抽象数据类型
  • 4.2 字符串的实现
  • 基本实现问题和技术
  • 实际语言里的字符串
  • Python的字符串
  • 4.3 字符串匹配(子串查找)
  • 字符串匹配
  • 串匹配和朴素匹配算法
  • 无回溯串匹配算法(KMP算法)
  • 4.4 字符串匹配问题
  • 串匹配/搜索的不同需要
  • 一种简化的正则表达式
  • 4.5 Python正则表达式
  • 概况
  • 基本情况
  • 主要操作
  • 正则表达式的构造
  • 正则表达式的使用
  • 本章总结
  • 练习

第5章 栈和队列

  • 5.1 概述
  • 栈、队列和数据使用顺序
  • 应用环境
  • 5.2 栈:概念和实现
  • 栈抽象数据类型
  • 栈的顺序表实现
  • 栈的链接表实现
  • 5.3 栈的应用
  • 简单应用:括号匹配问题
  • 表达式的表示、计算和变换
  • 栈与递归
  • 5.4 队列
  • 队列抽象数据类型
  • 队列的链接表实现
  • 队列的顺序表实现
  • 队列的list实现
  • 队列的应用
  • 5.5 迷宫求解和状态空间搜索
  • 迷宫求解:分析和设计
  • 求解迷宫的算法
  • 迷宫问题和搜索
  • 5.6 几点补充
  • 几种与栈或队列相关的结构
  • 几个问题的讨论
  • 本章总结
  • 练习

第6章 二叉树和树

  • 6.1 二叉树:概念和性质
  • 概念和性质
  • 抽象数据类型
  • 遍历二叉树
  • 6.2 二叉树的list实现
  • 设计和实现
  • 二叉树的简单应用:表达式树
  • 6.3 优先队列
  • 概念
  • 基于线性表的实现
  • 树形结构和堆
  • 优先队列的堆实现
  • 堆的应用:堆排序
  • 6.4 应用:离散事件模拟
  • 通用的模拟框架
  • 海关检查站模拟系统
  • 6.5 二叉树的类实现
  • 二叉树结点类
  • 遍历算法
  • 二叉树类
  • 6.6 哈夫曼树
  • 哈夫曼树和哈夫曼算法
  • 哈夫曼算法的实现
  • 哈夫曼编码
  • 6.7 树和树林
  • 实例和表示
  • 定义和相关概念
  • 抽象数据类型和操作
  • 树的实现
  • 树的Python实现
  • 本章总结
  • 练习

第7章 图

  • 7.1 概念、性质和实现
  • 定义和图示
  • 图的一些概念和性质
  • 图抽象数据类型
  • 图的表示和实现
  • 7.2 图结构的Python实现
  • 邻接矩阵实现
  • 压缩的邻接矩阵(邻接表)实现
  • 小结
  • 7.3 基本图算法
  • 图的遍历
  • 生成树
  • 7.4 *小生成树
  • *小生成树问题
  • Kruskal算法
  • Prim算法
  • Prim算法的改进
  • *小生成树问题
  • 7.5 *短路径
  • *短路径问题
  • 求解单源点*短路径的Dijkstra算法
  • 求解任意顶点间*短路径的Floyd算法
  • 7.6 AOV/AOE网及其算法
  • AOV网、拓扑排序和拓扑序列
  • 拓扑排序算法
  • AOE网和关键路径
  • 关键路径算法
  • 本章总结
  • 练习

第8章 字典和集合

  • 8.1 数据存储、检索和字典
  • 数据存储和检索
  • 字典实现的问题
  • 8.2 字典线性表实现
  • 基本实现
  • 有序线性表和二分法检索
  • 字典线性表总结
  • 8.3 散列和散列表
  • 散列的思想和应用
  • 散列函数
  • 冲突的内消解:开地址技术
  • 外消解技术
  • 散列表的性质
  • 8.4 集合
  • 集合的概念、运算和抽象数据类型
  • 集合的实现
  • 特殊实现技术:位向量实现
  • 8.5 Python的标准字典类dict和set
  • 8.6 二叉排序树和字典
  • 二叉排序树
  • **二叉排序树
  • 一般情况的**二叉排序树
  • 8.7 平衡二叉树
  • 定义和性质
  • AVL树类
  • 插入操作
  • 相关问题
  • 8.8 动态多分支排序树
  • 多分支排序树
  • B树
  • B+树
  • 本章总结
  • 练习

第9章 排序

  • 9.1 问题和性质
  • 问题定义
  • 排序算法
  • 9.2 简单排序算法
  • 插入排序
  • 选择排序
  • 交换排序
  • 9.3 快速排序
  • 快速排序的表实现
  • 程序实现
  • 复杂度
  • 另一种简单实现
  • 9.4 归并排序
  • 顺序表的归并排序
  • 归并算法的设计问题
  • 归并排序函数定义
  • 算法分析
  • 9.5 其他排序方法
  • 分配排序和基数排序
  • 一些与排序有关的问题
  • Python系统的list排序
  • 本章总结
  • 练习

参考文献


图书推荐:

1. Python编程 从入门到实践

  • 作 者:[美] 埃里克·马瑟斯 著 袁国忠 译
  • 出版社:人民邮电出版社

2. 数据结构教程(第3版)

  • 作 者:唐发根
  • 出版社:北京航空航天大学出版社

3. C++ Primer Plus(第6版 中文版)

  • 作 者:[美] Stephen Prata 著 张海龙 译
  • 出版社:人民邮电出版社

4. C Primer Plus 第6版 中文版

  • 作 者:[美] 史蒂芬·普拉达 著 姜佑 译
  • 出版社:人民邮电出版社

5. 剑指Offer:名企面试官精讲典型编程题(第2版)

  • 作 者:何海涛 著
  • 出版社:电子工业出版社

相关图文:


下载《数据结构与算法:Python语言描述》

关注公众号,后台回复

20190403

老马的程序人生 CSDN认证博客专家 终身学习者
我是终身学习者“老马”,一个长期践行“结伴式学习”理念的中年大叔。我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。愿我们一起学习,一起进步,相互陪伴,共同成长。
相关推荐
作者简介:   裘宗燕北京大学数据学院信息科学系教授。长期从事计算机软件与理论、程序设计语言和符号计算方面的研究和教学工作。已出版过多部著作和译著,包括《程序设计语言基础》(译著,北京大学出版社,1990),《Mathematics数学软件系统的应用与程序设计》(编著,北京大学出版社,1994),《C++程序设计语言(特别版)》(译著,机械工业出版社,2002),《C++语言的设计和演化》(译著,机械工业出版社,2002),《程序设计语言——概念和结构》(合译,机械工业出版社,2002),《从问题到程序——程序设计与C语言引论》(编著,机械工业出版社,2005年第1版,2011年第2版)等。 目录: 目  录 前言 第1章绪论1 1.1计算机问题求解1 1.1.1程序开发过程1 1.1.2 一个简单例子3 1.2 问题求解:交叉路口的红绿灯安排4 1.2.1问题分析和严格化5 1.2.2图的顶点分组和算法6 1.2.3算法的精化和Python描述7 1.2.4讨论8 1.3算法算法分析10 1.3.1问题、问题实例和算法10 1.3.2算法的代价及其度量14 1.3.3算法分析19 1.3.4Python程序的计算代价(复杂度)21 1.4数据结构23 1.4.1数据结构及其分类24 1.4.2计算机内存对象表示26 1.4.3Python对象和数据结构30 练习32 第2章抽象数据类型和Python类34 2.1抽象数据类型34 2.1.1数据类型和数据构造34 2.1.2抽象数据类型的概念36 2.1.3抽象数据类型的描述37 2.2Python的类39 2.2.1有理数类39 2.2.2类定义进阶40 2.2.3本书采用的ADT描述形式43 2.3类的定义和使用44 2.3.1类的基本定义和使用44 2.3.2实例对象:初始化和使用45 2.3.3几点说明47 2.3.4继承49 2.4Python异常53 2.4.1异常类和自定义异常53 2.4.2异常的传播和捕捉54 2.4.3内置的标准异常类54 2.5类定义实例:学校人事管理系统中的类55 2.5.1问题分析和设计56 2.5.2人事记录类的实现57 2.5.3讨论62 本章总结63 练习64 第3章线性表66 3.1线性表的概念和表抽象数据类型66 3.1.1表的概念和性质66 3.1.2表抽象数据类型67 3.1.3线性表的实现:基本考虑69 3.2顺序表的实现69 3.2.1基本实现方式69 3.2.2顺序表基本操作的实现71 3.2.3顺序表的结构74 3.2.4Python的list76 3.2.5顺序表的简单总结78 3.3链接表79 3.3.1线性表的基本需要和链接表79 3.3.2单链表79 3.3.3单链表类的实现84 3.4链表的变形和操作88 3.4.1单链表的简单变形88 3.4.2循环单链表91 3.4.3双链表92 3.4.4两个链表操作95 3.4.5不同链表的简单总结98 3.5表的应用99 3.5.1Josephus问题和基于“数组”概念的解法99 3.5.2基于顺序表的解100 3.5.3基于循环单链表的解101 本章总结102 练习103 第4章 字符串107 4.1 字符集、字符串和字符串操作107 4.1.1 字符串的相关概念107 4.1.2 字符串抽象数据类型109 4.2 字符串的实现109 4.2.1 基本实现问题和技术109 4.2.2 实际语言里的字符串110 4.2.3 Python的字符串111 4.3 字符串匹配(子串查找)112 4.3.1 字符串匹配112 4.3.2 串匹配和朴素匹配算法113 4.3.3 无回溯串匹配算法(KMP算法)115 4.4 字符串匹配问题119 4.4.1 串匹配/搜索的不同需要120 4.4.2 一种简化的正则表达式122 4.5 Python正则表达式123 4.5.1 概况124 4.5.2 基本情况124 4.5.3 主要操作125 4.5.4 正则表达式的构造126 4.5.5 正则表达式的使用132 本章总结132 练习133 第5章 栈和队列135 5.1 概述135 5.1.1 栈、队列和数据使用顺序135 5.1.2 应用环境136 5.2 栈:概念和实现136 5.2.1 栈抽象数据类型137 5.2.2 栈的顺序表实现137 5.2.3 栈的链接表实现139 5.3 栈的应用140 5.3.1 简单应用:括号匹配问题140 5.3.2 表达式的表示、计算和变换142 5.3.3 栈与递归149 5.4 队列155 5.4.1 队列抽象数据类型155 5.4.2 队列的链接表实现155 5.4.3 队列的顺序表实现156 5.4.4 队列的list实现158 5.4.5 队列的应用160 5.5 迷宫求解和状态空间搜索162 5.5.1 迷宫求解:分析和设计162 5.5.2 求解迷宫的算法164 5.5.3 迷宫问题和搜索167 5.6 几点补充171 5.6.1 几种与栈或队列相关的结构171 5.6.2 几个问题的讨论172 本章总结173 练习173 第6章 二叉树和树176 6.1 二叉树:概念和性质176 6.1.1 概念和性质177 6.1.2 抽象数据类型181 6.1.3 遍历二叉树181 6.2 二叉树的list实现183 6.2.1 设计和实现183 6.2.2 二叉树的简单应用:表达式树185 6.3 优先队列188 6.3.1 概念188 6.3.2 基于线性表的实现189 6.3.3 树形结构和堆191 6.3.4 优先队列的堆实现192 6.3.5 堆的应用:堆排序195 6.4 应用:离散事件模拟196 6.4.1 通用的模拟框架197 6.4.2 海关检查站模拟系统198 6.5 二叉树的类实现202 6.5.1 二叉树结点类203 6.5.2 遍历算法204 6.5.3 二叉树类208 6.6 哈夫曼树209 6.6.1 哈夫曼树和哈夫曼算法209 6.6.2 哈夫曼算法的实现210 6.6.3 哈夫曼编码211 6.7 树和树林212 6.7.1 实例和表示213 6.7.2 定义和相关概念213 6.7.3 抽象数据类型和操作215 6.7.4 树的实现216 6.7.5 树的Python实现218 本章总结220 练习220 第7章图224 7.1概念、性质和实现224 7.1.1 定义和图示224 7.1.2 图的一些概念和性质225 7.1.3 图抽象数据类型227 7.1.4 图的表示和实现228 7.2 图结构的Python实现231 7.2.1 邻接矩阵实现231 7.2.2 压缩的邻接矩阵(邻接表)实现233 7.2.3 小结235 7.3 基本图算法235 7.3.1 图的遍历236 7.3.2 生成树238 7.4 *小生成树240 7.4.1 *小生成树问题240 7.4.2 Kruskal算法240 7.4.3 Prim算法243 *7.4.4 Prim算法的改进246 7.4.5 *小生成树问题247 7.5 *短路径248 7.5.1 *短路径问题248 7.5.2 求解单源点*短路径的Dijkstra算法248 7.5.3 求解任意顶点间*短路径的Floyd算法252 7.6 AOV/AOE网及其算法255 7.6.1 AOV网、拓扑排序和拓扑序列255 7.6.2 拓扑排序算法257 7.6.3 AOE网和关键路径258 7.6.4 关键路径算法259 本章总结261 练习262 第8章 字典和集合265 8.1 数据存储、检索和字典265 8.1.1 数据存储和检索265 8.1.2 字典实现的问题267 8.2 字典线性表实现269 8.2.1 基本实现269 8.2.2 有序线性表和二分法检索270 8.2.3 字典线性表总结272 8.3 散列和散列表273 8.3.1 散列的思想和应用273 8.3.2 散列函数275 8.3.3 冲突的内消解:开地址技术277 8.3.4 外消解技术280 8.3.5 散列表的性质280 8.4 集合282 8.4.1 集合的概念、运算和抽象数据类型282 8.4.2 集合的实现283 8.4.3 特殊实现技术:位向量实现285 8.5 Python的标准字典类dict和set286 8.6 二叉排序树和字典287 8.6.1 二叉排序树288 8.6.2 **二叉排序树295 8.6.3 一般情况的**二叉排序树297 8.7 平衡二叉树302 8.7.1 定义和性质302 8.7.2 AVL树类303 8.7.3 插入操作304 8.7.4 相关问题310 8.8 动态多分支排序树311 8.8.1 多分支排序树311 8.8.2 B树312 8.8.3 B+ 树314 本章总结315 练习316 第9章 排序319 9.1 问题和性质319 9.1.1 问题定义319 9.1.2 排序算法320 9.2 简单排序算法323 9.2.1 插入排序323 9.2.2 选择排序325 9.2.3 交换排序327 9.3 快速排序328 9.3.1 快速排序的表实现329 9.3.2 程序实现330 9.3.3 复杂度331 9.3.4 另一种简单实现332 9.4 归并排序332 9.4.1 顺序表的归并排序333 9.4.2 归并算法的设计问题333 9.4.3 归并排序函数定义333 9.4.4 算法分析335 9.5 其他排序方法335 9.5.1 分配排序和基数排序335 9.5.2 一些与排序有关的问题338 9.5.3 Python系统的list排序339 本章总结340 练习342
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页