数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的系统中文资料比较欠缺, 笔者尝试录制视频教程帮助 Python 开发者掌握常用算法和数据结构,提升开发技能。 本教程是付费教程(文字内容和代码免费),因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,养家糊口不容易,希望大家体谅。
视频教程已经发布在网易云课堂和 csdn 学院,内容一致,推荐使用网易云课堂。
《开源一个 Python 算法和数据结构中文教程[视频]》 视频讲解示例
- 讲 Python 数据结构和算法的资料很少,中文资料更少
- 很多自学 Python 的工程师对基础不够重视,面试也发现很多数据结构和算法不过关,很多人挂在了基础的数据结构和算法上
- 缺少工程应用场景下的讲解,很多讲算法的资料太『教科书化』。本书实现的代码工程上可用
- 网上很多视频教程不够循序渐进,不成系统
曾就职于知乎,任后端工程师,多年 Python 开发经验。
知乎专栏:
包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助 Python 开发者快速上手,很多老手写业务代码写多了很多基础知识忘记了, 也可以作为回顾。课程尽量用通俗的方式讲解,结合 python 语言和日常开发实践的经验。书中代码可以作为大家的面试笔试参考。 对于每个算法和用到的数据结构我们需要知道:
- 原理
- Python 实现方式
- 时间、空间复杂度
- 使用场景,什么时候用
这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲,争取做到循序渐进,简单实用。因为实现一些高级数据结构的时候会用到 很多底层数据结构,防止跳跃太大导致读者理解困难。
课程的目录结构如下,每一章都有配套的文字讲义(markdown),示例代码,视频讲解,详细的讲解一般会放在视频里,使用手写板来 进行板书,包括文字、图示、手动模拟算法过程等。
- 课程介绍
- 课程简介之笨方法学算法
- 抽象数据类型 ADT,面向对象编程
- 数组和列表
- 链表,高级链表。双链表,循环双端链表
- 队列,双端队列,循环双端队列
- 栈,栈溢出
- 算法分析,时间复杂度 大O 表示法
- 哈希表,散列冲突
- 字典
- 集合
- 递归
- 查找:线性查找和二分查找
- 基本排序算法: 冒泡、选择、插入排序
- 高级排序算法: 归并排序、快排
- 树,二叉树
- 堆与堆排序
- 优先级队列
- 二叉查找树
- 图与图的遍历
- python 内置常用数据结构和算法的使用。list, dict, set, collections 模块,heapq 模块
- 面试笔试常考算法
我们这里使用最近很火的Python。Python 入门简单而且是个多面手,在爬虫、web 后端、运维、数据分析、AI、量化投资等领域都有 Python 的身影, 无论是否是专业程序员, Python 都是一门学习性价比非常高的语言。 知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python,有一定实践经验, 在知乎上维护了一个专栏《Python 学习之路》。
Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存管理、指针操作等底层问题, 把主要心思放在算法逻辑本身而不是语言细节上,Python 也号称伪代码语言。所有代码示例使用 Python2/3 兼容代码, 不过只在 python3.5 下测试过,推荐用相同版本 Python 进行代码编写和测试。
想要学习 Python 算法和数据结构的中级同学,包括自学的同学和本科低年级学生等。需要掌握 Python 的基本语法和面向对象编程的一些概念,有一定的 Python 使用经验。我们这里尽量只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。 数据结构和算法算是本科教育中偏难的课程,既需要你理解其原理,又需要具有有扎实的编程能力。
请注意: 本教程不是零基础教程,着重于使用 Python 实现常用算法和数据结构,不适合从来没有学过算法和数据结构的新手同学,购买之前请慎重考虑,请确保你之前看过一本数据结构和算法的教材,最好有过其他语言实现算法的经验