Skip to content

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 图结构小结