一、为什么这次选择数据结构?
上次更完了python语言的基础部分,那么接下来需要给小白女票恶补的是什么呢?除了学习编程语言外,本科期间的专业课最能体现出计算机特色的,无非就是四门:数据结构、计算机网络、操作系统、计算机组成原理。其实看我列举的这四门的顺序就知道了,结合室友找工作回来的经验,重要程度基本就是这么排的。计组,不搞硬件基本是不会问得特别深。计网,她们也学,虽然可能重点不同但也算有了解,OS偏底层更多,而且本人很久也没看过了,教别人信心也不是很强。
数据结构,先加粗一下,表示尊敬。
属于内功,有点博大精深的感觉,应该是计科专业必须非常熟悉的,关系到功能拿来实现的质量和效率,面试题是必过的关。考虑到她这方面的空白,所以虽然我的水平有限,也还是尽力学习转述。还是那句话,如果更多的人未来看到了这个系列,欢迎批评指正,因为本人实在就是一个水平一般,爱动笔、爱分享的普通男孩。
二、为什么用python:
1、python简单、易用、应用层面广,个人觉得能更清晰地展示算法的关键步骤。
2、上次刚更完python基础嘛,也算是承上。
3、C/C++描述算法更经典,但是本人C++不是很熟。
三、参考:
本人本科期间的数据结构是采用经典的C语言教学,自然拿来就用就不符合我们的要求了。这里主要是根据B站上北京大学陈斌老师的课程《数据结构与算法》python版,来总结添加内容。还是同样的,本人会尽量使用白话和最简单的方式,尽量用文字、代码、执行结果,全面地展示数据结构的基础内容。
四、大纲:
不一定完全按照此内容,但是基本框架符合
- 线性结构:无序表、有序表、栈、队列、双端队列
- 递归:递归定义、最优化、分治、贪心、动态规划
- 查找:顺序、二分
- 排序:冒泡、选择、插入、希尔、归并、快排
- 散列:散列函数、冲突解决
- 树:实现树、三种遍历、实现优先队列、实现二叉堆、BST、AVL
- 图:基本概念、BFS、DFS、拓扑排序、强连通分支、单源最短路径、最小生成树
网友评论