|
| 1 | +# Python 算法与数据结构视频教程 |
| 2 | + |
| 3 | + |
| 4 | +## 课程简介 |
| 5 | +数据结构和算法是每个程序员需要掌握的基础技能之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺, |
| 6 | +笔者尝试录制视频教程帮助 Python 初学者掌握常用算法和数据结构,提升开发技能。 |
| 7 | +本教程是付费教程,因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频,希望大家体谅。 |
| 8 | + |
| 9 | +## 课程内容 |
| 10 | +包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助新人快速上手,很多老手写业务代码写多了很多基础知识忘记了, |
| 11 | +也可以作为回顾。 |
| 12 | +对于每个算法和用到的数据结构我们需要知道: |
| 13 | + |
| 14 | +- 原理 |
| 15 | +- Python 实现方式 |
| 16 | +- 时间、空间复杂度 |
| 17 | +- 使用场景,什么时候用 |
| 18 | + |
| 19 | +## 目录结构 |
| 20 | +这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲。 |
| 21 | +视频课程的目录结构: |
| 22 | + |
| 23 | +- 课程简介,笨方法学算法 |
| 24 | +- 抽象数据类型 ADT,面向对象编程 |
| 25 | +- 数组和链表 |
| 26 | +- 队列和栈 |
| 27 | +- 算法分析,时间复杂度 大O 表示法 |
| 28 | +- 高级链表。双链表 |
| 29 | +- 哈希表,散列冲突 |
| 30 | +- 字典和集合 |
| 31 | +- 递归 |
| 32 | +- 线性查找和二分查找 |
| 33 | +- 基本排序算法 |
| 34 | +- 高级排序算法: 归并排序、堆排序、快排 |
| 35 | +- 树,二叉树 |
| 36 | +- 图,dfs 和 bfs |
| 37 | +- python 内置常用数据结构和算法。list, dict, set, collections 模块,heapq 模块 |
| 38 | + |
| 39 | +## 编程语言 |
| 40 | +我们这里使用最近很火的Python。Python 入门简单而且是个多面手,在爬虫、web 后端、运维、数据分析、AI 方面领域都有 Python 的身影。 |
| 41 | +知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python 居多,有一定实践经验, |
| 42 | +在知乎上维护了一个专栏[《Python 学习之路》](https://zhuanlan.zhihu.com/c_85234576)。 |
| 43 | + |
| 44 | +并且由于 Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存分配、指针操作等问题, |
| 45 | +把主要心思放在算法逻辑本身上,Python 也号称伪代码语言。 |
| 46 | + |
| 47 | +## 受众 |
| 48 | +想要学习 Python 算法和数据结构的初、中级同学。需要掌握 Python |
| 49 | +的基本语法和面向对象编程的一些概念,我们这里只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。 |
| 50 | + |
| 51 | +## 教材 |
| 52 | +这里我曾参考过三本书: |
| 53 | + |
| 54 | +[《算法图解》](https://book.douban.com/subject/26979890/): 图解的形式很适合新手 |
| 55 | + |
| 56 | +[《Data Structures and Algorithms in Python》]( https://book.douban.com/subject/10607365/): 适合对 Python |
| 57 | +和算法比较熟悉的同学,或者是有其他语言编程经验的同学 |
| 58 | + |
| 59 | +[《算法导论》]( https://book.douban.com/subject/20432061/): 喜欢数学证明和板砖书的同学可以参考,有很多高级主题 |
| 60 | + |
| 61 | + |
| 62 | +## 讲课形式 |
| 63 | + |
| 64 | +绘图演示+手写板+现场编码 |
| 65 | + |
| 66 | +我将使用绘图软件+手写板进行类似于纸笔形式的讲解,边讲边开个终端分成两个窗口,一个用 vim |
| 67 | +编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的),不会像某些大学教师一样只喜欢念 ppt, |
| 68 | +你可以参考我在知乎发的专栏文章看下: |
| 69 | + |
| 70 | +[那些年,我们一起跪过的算法题[视频]](https://zhuanlan.zhihu.com/p/35175401) |
| 71 | + |
| 72 | +[抱歉,我是开发,你居然让我写单测[视频]](https://zhuanlan.zhihu.com/p/35352024) |
| 73 | + |
| 74 | + |
| 75 | +## 资料 |
| 76 | + |
| 77 | +- 视频。包含所有讲解视频 |
| 78 | +- 代码示例。所有代码我会放到 github 上 |
| 79 | +- markdown 讲义。 |
| 80 | + |
| 81 | +## 如何学习 |
| 82 | +笔者讲课录制视频的过程也是自己再整理和学习的过程,录制视频之前需要参考很多资料 |
| 83 | + |
| 84 | +- 理解所讲的每个数据结构和算法的 |
| 85 | + - 原理 |
| 86 | + - Python 实现方式 |
| 87 | + - 时间、空间复杂度 |
| 88 | + - 使用场景,什么时候用 |
| 89 | +- 自己尝试实现,如果抛开视频自己写起来有困难可以多看几次视频,一定要自己手动实现 |
| 90 | + |
| 91 | +## 开发工具 |
| 92 | +推荐使用以下工具进行开发,如果使用编辑器你需要安装对应的插件: |
| 93 | + |
| 94 | +- Pycharm |
| 95 | +- Sublime |
| 96 | +- Atom |
| 97 | +- Vscode |
| 98 | +- Vim |
0 commit comments