Skip to content

Commit 2ee7917

Browse files
committed
课程简介
1 parent 2897bb7 commit 2ee7917

File tree

3 files changed

+57
-17
lines changed

3 files changed

+57
-17
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.mp4
2+
*.mov
3+
*.avi
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 什么是算法和数据结构?
2+
3+
你可能会在一些教材上看到这句话:
4+
5+
程序 = 算法 + 数据结构
6+
7+
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
8+
数据结构(Data Structures):是计算机存储和组织数据的一种方式,可以用来高效地处理数据。
9+
10+
举个例子:二分查找就是一个非常经典的算法,而二分查找经常需要作用在一个有序数组上。这里二分就是一种折半的算法思想,
11+
而数组是我们最常用的一种数据结构,支持根据下标快速访问。很多算法需要特定的数据结构来实现,所以经常把它们放到一块讲。
12+
13+
实际上,在真正的项目开发中,大部分时间都是 从数据库取数据 -> 数据操作和结构化 -> 返回给前端,在数据操作过程中需要合理地抽象,
14+
组织、处理数据,如果选用了错误的数据结构,就会造成代码运行低效。这也是我们需要学习算法和数据结构的原因。
15+
16+
# 笨方法学算法
17+
这里我们用一种很原始的『笨』方法来学习算法:纸笔模拟。
18+
19+
- 阅读资料了解算法思想
20+
- 纸笔模拟尝试理解
21+
- 用自己熟悉的编程语言来实现
22+
- 单测
23+
24+
# 小问题
25+
26+
- 1. 你还知道哪些经典的算法和数据结构?
27+
- 2. 学习算法你觉得需要哪些预备知识?
28+
- 3. 我们的业务代码开发中会涉及到算法吗?

README.md

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
# Python 算法与数据结构视频教程
22

3-
43
## 课程简介
5-
数据结构和算法是每个程序员需要掌握的基础技能之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺,
4+
数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺,
65
笔者尝试录制视频教程帮助 Python 初学者掌握常用算法和数据结构,提升开发技能。
7-
本教程是付费教程,因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频,希望大家体谅。
6+
本教程是付费教程,因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,希望大家体谅。
7+
8+
## 作者简介
9+
目前就职于知乎,从实习期间接触 Python 起一直从事 Python 后端开发,有一定 Python 的使用经验。
10+
知乎专栏: 《Python 学习之路》《玩转vim》
11+
电子书:《Python web 入坑指南》
812

913
## 课程内容
1014
包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助新人快速上手,很多老手写业务代码写多了很多基础知识忘记了,
11-
也可以作为回顾。
15+
也可以作为回顾。课程尽量用通俗的方式讲解,结合 python 语言和日常开发实践的经验,让没有太多基础和非科班的同学也能够理解。
1216
对于每个算法和用到的数据结构我们需要知道:
1317

1418
- 原理
@@ -20,12 +24,12 @@
2024
这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲。
2125
视频课程的目录结构:
2226

23-
- 课程简介,笨方法学算法
27+
- 课程简介之笨方法学算法
2428
- 抽象数据类型 ADT,面向对象编程
2529
- 数组和链表
26-
- 队列和栈
30+
- 队列和栈,双端队列
2731
- 算法分析,时间复杂度 大O 表示法
28-
- 高级链表。双链表
32+
- 高级链表。双链表,循环双端链表
2933
- 哈希表,散列冲突
3034
- 字典和集合
3135
- 递归
@@ -34,37 +38,40 @@
3438
- 高级排序算法: 归并排序、堆排序、快排
3539
- 树,二叉树
3640
- 图,dfs 和 bfs
37-
- python 内置常用数据结构和算法。list, dict, set, collections 模块,heapq 模块
41+
- python 内置常用数据结构和算法的使用。list, dict, set, collections 模块,heapq 模块
42+
- 面试笔试常考算法
3843

3944
## 编程语言
4045
我们这里使用最近很火的Python。Python 入门简单而且是个多面手,在爬虫、web 后端、运维、数据分析、AI 方面领域都有 Python 的身影。
4146
知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python 居多,有一定实践经验,
4247
在知乎上维护了一个专栏[《Python 学习之路》](https://zhuanlan.zhihu.com/c_85234576)
4348

44-
并且由于 Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存分配、指针操作等问题
45-
把主要心思放在算法逻辑本身上,Python 也号称伪代码语言。
49+
Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存管理、指针操作等底层问题
50+
把主要心思放在算法逻辑本身而不是语言细节上,Python 也号称伪代码语言。所有代码示例使用 Python3.
4651

4752
## 受众
4853
想要学习 Python 算法和数据结构的初、中级同学。需要掌握 Python
4954
的基本语法和面向对象编程的一些概念,我们这里只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。
5055

5156
## 教材
52-
这里我曾参考过三本书
57+
这里我参考过三本书
5358

54-
[《算法图解》](https://book.douban.com/subject/26979890/): 图解的形式很适合新手
59+
[《算法图解》](https://book.douban.com/subject/26979890/): 图解的形式很适合新手,示例使用的是 python
5560

5661
[《Data Structures and Algorithms in Python》]( https://book.douban.com/subject/10607365/): 适合对 Python
57-
和算法比较熟悉的同学,或者是有其他语言编程经验的同学
62+
和算法比较熟悉的同学,或者是有其他语言编程经验的同学。英文版,缺点是书中错误真的很多,代码有些无法运行
5863

59-
[《算法导论》]( https://book.douban.com/subject/20432061/): 喜欢数学证明和板砖书的同学可以参考,有很多高级主题
64+
[《算法导论》]( https://book.douban.com/subject/20432061/): 喜欢数学证明和板砖书的同学可以参考,有很多高级主题。使用伪代码
6065

6166

6267
## 讲课形式
6368

6469
绘图演示+手写板+现场编码
6570

6671
我将使用绘图软件+手写板进行类似于纸笔形式的讲解,边讲边开个终端分成两个窗口,一个用 vim
67-
编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的),不会像某些大学教师一样只喜欢念 ppt,
72+
编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的),不会像某些大学教师一样只喜欢念 ppt。
73+
每个视频我会尽量控制时长,讲的内容尽量通俗易懂,摆脱学院派的授课方式。
74+
6875
你可以参考我在知乎发的专栏文章看下:
6976

7077
[那些年,我们一起跪过的算法题[视频]](https://zhuanlan.zhihu.com/p/35175401)
@@ -80,19 +87,21 @@
8087

8188
## 如何学习
8289
笔者讲课录制视频的过程也是自己再整理和学习的过程,录制视频之前需要参考很多资料
90+
希望对所讲到的内容,你能够
8391

8492
- 理解所讲的每个数据结构和算法的
8593
- 原理
8694
- Python 实现方式
8795
- 时间、空间复杂度
8896
- 使用场景,什么时候用
89-
- 自己尝试实现,如果抛开视频自己写起来有困难可以多看几次视频,一定要自己手动实现
97+
- 自己尝试实现,如果抛开视频自己写起来有困难可以多看几次视频,一定要自己手动实现。很多面试可能会让手写
9098

9199
## 开发工具
92-
推荐使用以下工具进行开发,如果使用编辑器你需要安装对应的插件
100+
推荐使用以下工具进行开发,如果使用编辑器你需要安装对应的 Python 插件
93101

94102
- Pycharm
95103
- Sublime
96104
- Atom
97105
- Vscode
98106
- Vim
107+

0 commit comments

Comments
 (0)