# Python 算法与数据结构视频教程
## 课程简介
数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的系统中文资料比较欠缺,
笔者尝试录制视频教程帮助 Python 开发者掌握常用算法和数据结构,提升开发技能。
本教程是付费教程(文字内容和代码免费),因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,养家糊口不容易,希望大家体谅。
## 链接
视频教程已经发布在网易云课堂和 csdn 学院,内容一致,推荐使用网易云课堂。
- [网易云课堂: Python数据结构与算法教程](http://study.163.com/course/introduction.htm?courseId=1005526003)
- [csdn 学院:Python数据结构与算法教程](https://edu.csdn.net/course/detail/8332)
电子书地址:
- [网上阅读《Python 算法与数据结构教程 》](http://pegasuswang.github.io/python_data_structures_and_algorithms/)
- [github 链接](https://github.com/PegasusWang/python_data_structures_and_algorithms)
- [readthedoc 电子书下载](http://python-data-structures-and-algorithms.readthedocs.io/zh/latest/)
- [《开源一个 Python 算法和数据结构中文教程[视频]》](https://zhuanlan.zhihu.com/p/36038003) 视频讲解示例
leetcode 实战图解教程(推荐):
如果您有一定的基础,只是想快速针对面试刷题,也可以直接参考笔者针对《剑指offer》和 leetcode 经典题目的 Python 刷题图解实战。
- [图解Python数据结构与算法-实战篇- leetcode经典题目实战](https://study.163.com/course/courseMain.htm?courseId=1212203808&share=2&shareId=400000000496051)
笔者的其他课程:
- [玩转Vim 从放弃到爱不释手](https://www.imooc.com/learn/1129)
- [Python工程师面试宝典](https://coding.imooc.com/class/318.html)
## 痛点
- 讲 Python 数据结构和算法的资料很少,中文资料更少
- 很多自学 Python 的工程师对基础不够重视,面试也发现很多数据结构和算法不过关,很多人挂在了基础的数据结构和算法上
- 缺少工程应用场景下的讲解,很多讲算法的资料太『教科书化』。本书实现的代码工程上可用
- 网上很多视频教程不够循序渐进,不成系统
## 作者简介
曾就职于[知乎](https://www.zhihu.com/people/pegasus-wang/activities),现腾讯视频后端工程师,多年 Python/Go 开发经验。
知乎专栏:
- [《Python 学习之路》](https://zhuanlan.zhihu.com/c_85234576)
- [《玩转vim(视频)》](https://zhuanlan.zhihu.com/vim-video)
电子书:[《Python web 入坑指南》](http://python-web-guide.readthedocs.io/zh/latest/)
## 课程内容
包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助 Python 开发者快速上手,很多老手写业务代码写多了很多基础知识忘记了,
也可以作为回顾。课程尽量用通俗的方式讲解,结合 python 语言和日常开发实践的经验。书中代码可以作为大家的面试笔试参考。
对于每个算法和用到的数据结构我们需要知道:
- 原理
- Python 实现方式
- 时间、空间复杂度
- 使用场景,什么时候用
## 目录结构
这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲,争取做到循序渐进,简单实用。因为实现一些高级数据结构的时候会用到
很多底层数据结构,防止跳跃太大导致读者理解困难。
课程的目录结构如下,每一章都有配套的文字讲义(markdown),示例代码,视频讲解,详细的讲解一般会放在视频里,使用手写板来
进行板书,包括文字、图示、手动模拟算法过程等。
- 课程介绍
- 课程简介之笨方法学算法
- 抽象数据类型 ADT,面向对象编程
- 数组和列表
- 链表,高级链表。双链表,循环双端链表
- 队列,双端队列,循环双端队列
- 栈,栈溢出
- 算法分析,时间复杂度 大O 表示法
- 哈希表,散列冲突
- 字典
- 集合
- 递归
- 查找:线性查找和二分查找
- 基本排序算法: 冒泡、选择、插入排序
- 高级排序算法: 归并排序、快排
- 树,二叉树
- 堆与堆排序
- 优先级队列
- 二叉查找树
- 图与图的遍历
- python 内置常用数据结构和算法的使用。list, dict, set, collections 模块,heapq 模块
- 面试笔试常考算法
## 编程语言
我们这里使用最近很火的Python。Python 入门简单而且是个多面手,在爬虫、web 后端、运维、数据分析、AI、量化投资等领域都有 Python 的身影,
无论是否是专业程序员, Python 都是一门学习性价比非常高的语言。
知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python,有一定实践经验,
在知乎上维护了一个专栏[《Python 学习之路》](https://zhuanlan.zhihu.com/c_85234576)。
Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存管理、指针操作等底层问题,
把主要心思放在算法逻辑本身而不是语言细节上,Python 也号称伪代码语言。所有代码示例使用 Python2/3 兼容代码,
不过只在 python3.5 下测试过,推荐用相同版本 Python 进行代码编写和测试。
## 受众
想要学习 Python 算法和数据结构的中级同学,包括自学的同学和本科低年级学生等。需要掌握 Python
的基本语法和面向对象编程的一些概念,有一定的 Python 使用经验。我们这里尽量只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。
数据结构和算法算是本科教育中偏难的课程,既需要你理解其原理,又需要具有有扎实的编程能力。
**请注意: 本教程不是零基础教程,着重于使用 Python 实现常用算法和数据结构,不适合从来没有学过算法和数据结构的新手同学,购买之前请慎重考虑,请确保你之前看过一本数据结构和算法的教材,最好有过其他语言实现算法的经验**
# 预备知识
(注意:有些同学看起来很吃力,为了不花冤枉钱,我建议你先整体浏览本电子书的内容和代码是否在自己的理解范围内,再决定是否购买视频。有些概念不是立马就能理解的,需要反复思考实践)
- 了解基本的数据结构和算法的概念,不适合**完全**没有了解过算法的新手,更不适合 Python 基础都没掌握的同学。购买之前请慎重考虑
- 无需太多数学基础,仅在算法时间复杂度分析的时候会用到一些简单数学知识。对于学习基础算法,逻辑思维可能更重要一些
## 参考教材和链接
这里我参考过三本书,均可以网购纸质版或者网络上搜索电子版,建议大家先大致阅读一本教材掌握基本原理,本教程重点在于 Pythonic 代码实现:
[《算法图解》](https://book.douban.com/subject/26979890/): 图解的形式很适合新手,示例使用的是 python。推荐基础较少的同学看这本书入门
[《Data Structures and Algorithms in Python》]( https://book.douban.com/subject/10607365/): 适合对 Python
和算法比较熟悉的同学,或者是有其他语言编程经验的同学。本书是英文版,缺点是书中错误真的很多,代码有些无法运行而且不够 Pythonic。该书 [勘误](http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=9003&itemId=0470618299&resourceId=35653)
[《算法导论》第三版]( https://book.douban.com/subject/20432061/): 喜欢数学证明和板砖书的同学可以参考,有很多高级主题。使用伪代码可以很快翻译成 Python
## 算法可视化
学习算法的过程中�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
数据结构学习资料分享 内容概览: 本次分享包涵了大学计算机相关专业必学的“数据结构”课程的一系列学习资料。主要包括: 算法代码:我们提供了多种数据结构的实现代码,包括数组、链表、栈、队列、树、图等。这些代码不仅能帮助你理解数据结构的基本概念,而且能让你明白如何在实际情况中应用这些数据结构。 笔记:详细且系统的笔记,涵盖了数据结构的各个方面,从基础概念到复杂的数据结构如堆、B树等。这些笔记有助于你系统地复习和学习数据结构。 相关书籍推荐:为了更深入地理解数据结构,我们推荐了几本经典的教材和参考书籍。这些书籍将帮助你建立完整的数据结构知识体系。 适用人群: 这份学习资料适用于所有大学计算机相关专业的学生,无论你是初学者还是已经有一定的数据结构基础。同时,对于对数据结构感兴趣的非专业人士,这份资料也是一个很好的起点。 使用建议: 结合理论和实践:在学习的过程中,请结合算法代码和理论知识。尝试自己编写代码实现数据结构,并在遇到问题时参考提供的代码。 由浅入深:建议先从基础的数据结构开始学习,如数组和链表,然后再学习更复杂的数据结构如树和图。 多做练习:数据结构是实践性很强的学科。通过多做练习,你可以更好地理解数据结构的基本概念和原理,并提高编程能力。
资源推荐
资源详情
资源评论
收起资源包目录
Python 中文数据结构和算法教程.zip (142个子文件)
hanoi.gif 47KB
.gitignore 232B
LICENSE 1KB
Makefile 104B
builtins.md 22KB
README.md 19KB
tree.md 12KB
binary_search_tree.md 10KB
hashtable.md 9KB
recursion.md 9KB
heap_and_heapsort.md 8KB
linked_list.md 6KB
basic_sort.md 6KB
quick_sort.md 6KB
big_o.md 6KB
search.md 5KB
interview.md 5KB
graph.md 5KB
queue.md 4KB
merge_sort.md 4KB
stack.md 4KB
array_and_list.md 3KB
dict.md 3KB
set.md 3KB
ADT_OOP.md 2KB
priority_queue.md 2KB
why_and_how_to_learn.md 2KB
README.md 889B
advanced_sorting.md 368B
index.md 12B
163_course.png 298KB
list.png 242KB
insert_hash_chaining.png 222KB
tn.png 170KB
insert_hash.png 163KB
function_growth.png 143KB
merge_sorted_array_2.png 118KB
find_successor.png 114KB
siftdown.png 114KB
print_rec.png 114KB
merge_sorted_array.png 109KB
array_queue.png 107KB
siftup.png 105KB
partition.png 98KB
merge_sort_recursion_tree.png 93KB
quick_sort.png 92KB
graph_rep.png 87KB
set.png 80KB
binary_tree.png 78KB
graph_road.png 73KB
bst_remove_node_with_one_child.png 73KB
family_tree.png 70KB
bst_remove_leaf.png 68KB
heap_array.png 66KB
quicksort_worst.png 66KB
bst_insert.png 65KB
remove_interior_replace.png 62KB
preorder.png 60KB
tree.png 57KB
binary_tree_level.png 57KB
merge_sort_split.png 55KB
heap.png 54KB
complete_binary_tree.png 54KB
merge_sort_merge.png 53KB
bst_search.png 53KB
bfs.png 48KB
predecessor_successor.png 42KB
bst_worstcase.png 41KB
bst.png 35KB
full_binary_tree.png 30KB
quadratic_hash.png 26KB
quadratic_result.png 21KB
hanoi_tower.png 20KB
perfect_binary_tree.png 20KB
hanoi_four_disks.png 19KB
fact.png 13KB
163_course.png 17B
lru_cache.py 8KB
priority_queue.py 6KB
linked_list.py 6KB
hashtable.py 6KB
set_adt.py 5KB
bst.py 5KB
dict_adt.py 5KB
queue.py 5KB
btree.py 5KB
stack.py 5KB
heap_and_heapsort.py 4KB
40_NumbersAppearOnce(数组中只出现一次的数字).py 4KB
29_MoreThanHalfNumber(数组中出现次数超过一半的数字).py 4KB
19_MirrorOfBinaryTree(二叉树镜像).py 4KB
double_link_list.py 3KB
quicksort.py 3KB
28_StringPermutation(字符串全排列).py 3KB
34_UglyNumber(丑数).py 3KB
37_FirstCommonNodesInLists(两个链表的第一个公共结点).py 3KB
15_KthNodeFromEnd(链表倒数第k个节点).py 3KB
30_KLeastNumbers(最小的 k 个数).py 3KB
33_SortArrayForMinNumber(把数组排成最小的数).py 2KB
38_NumberOfK(数字在排序数组中出现的次数).py 2KB
共 142 条
- 1
- 2
资源评论
01红C
- 粉丝: 1629
- 资源: 1098
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功