Overview¶
一、概述¶
- 101 引子:数据时代
- 102 问题求解的计算之道
- 103 图灵机计算模型
- 104 算法和计算复杂性
- 105 突破计算极限
- 106 什么是抽象和实现
- 107 为什么研究数据结构与算法
- 108 从 C 转换到 Python
二、算法分析¶
- 201 什么是算法分析
- 202 大O表示法
- 203 “变位词”判断问题(上)
- 204 “变位词”判断问题(下)
- 205 Python数据类型的性能(上)
- 206 Python数据类型的性能(下)
三、基本结构(上)¶
- 301 什么是线性结构
- 302 栈抽象数据类型及Python实现
- 303 栈的应用:简单括号匹配
- 304 栈的应用:十进制转换为二进制
- 305 表达式转换(上)
- 306 表达式转换(下)
- 307 后缀表达式求值
四、基本结构(下)¶
- 308 队列抽象数据类型及Python实现
- 309 队列的应用:热土豆
- 310 队列的应用:打印任务(上)
- 311 队列的应用:打印任务(下)
- 312 双端队列抽象数据类型及Python实现+回文词判定
- 313 无序表抽象数据类型及Python实现
- 314 无序表的链表实现
- 315 有序表抽象数据类型及Python实现
- 316 线性结构小结
五、递归(上)¶
- 401 什么是递归
- 402 递归的应用:任意进制转换
- 403 递归调用的实现
- 404 递归可视化:分形树
- 405 递归可视化:谢尔宾斯基三角
- 406 递归的应用:汉诺塔
- 407 递归的应用:探索迷宫
六、递归(下)¶
- 408 分治策略
- 409 优化问题和贪心策略
- 410 找零兑换问题的递归解法
- 411 找零兑换问题的动态规划解法
- 412 动态规划案例分析
- 413 递归小结
七、排序与查找(上)¶
- 501 顺序查找算法及分析
- 502 二分查找算法及分析
- 503 冒泡和选择排序算法及分析
- 504 插入排序算法及分析
- 505 谢尔排序算法及分析
- 506 归并排序算法及分析
- 507 快速排序算法及分析
八、排序与查找(下)¶
- 508 什么是散列
- 509 完美散列函数
- 510 区块链技术
- 511 散列函数设计
- 512 冲突解决方案
- 513 映射抽象数据类型及Python实现
- 514 排序与查找小结
九、树及算法(上)¶
- 601 什么是树
- 602 树结构相关术语
- 603 树的嵌套列表实现
- 604 树的链表实现
- 605 树的应用:表达式解析(上)
- 606 树的应用:表达式解析(下)
- 607 树的遍历
- 608 优先队列和二叉堆
- 609 二叉堆的Python实现
十、树及算法(下)¶
- 610 二叉查找树及操作
- 611 二叉查找树实现及算法分析(上)
- 612 二叉查找树实现及算法分析(下)
- 613 AVL树的定义和性能
- 614 AVL树的Python实现
- 615 树结构小结
十一、图及算法(上)¶
- 701 图的基本概念及相关术语
- 702 图抽象数据类型
- 703 图抽象数据类型的Python实现
- 704 图的应用:词梯问题
- 705 实现广度优先搜索
- 706 图的应用:骑士周游问题
- 707 骑士周游问题算法实现
- 708 骑士周游问题算法分析与改进
十二、图及算法(下)¶
- 709 通用的深度优先搜索
- 710 图的应用:拓扑排序
- 711 图的应用:强连通分支
- 712 图的应用:最短路径
- 713 图的应用:最小生成树
- 714 图结构小结