数据结构——大学慕课浙江大学
1. 引子
日常生活中,如何建立一个图书馆(数据库),我们要考虑如何规划:
1. 随意摆放(优势:存放速度快,查询问题大等)
2. 按首字母摆放(稍微好点,但同个字母的书籍该如何摆放?)
3. 按分类摆放(分类应该分多细呢?不细容易出现同一分类摆放问题,太细导致分类太多,每次查书籍都要从一大堆分类中找到需要的分类)
优答:将书籍按照数字分类,如100就是西方哲学,120就是东方哲学,而西方哲学里面的希腊哲学则以100-X来表示,亦或者100-1-X,形成开闭原则。
2.抽象数据类型
抽象数据类型指的是,在创建时不规定一个数据必须时什么类型的,而是抽象的,由传入者决定数据时什么类型的再进而处理,形成了一个处理函数可以对多个数据类型进行处理。
3.关于数据结构的一些诠释
堆栈:
1. python底层时C实现的,而C的计算时后缀表达式,栈对后缀表达式进行处理才有了现在python的中缀表达式,后缀表达式:12+34*59/
2. 递归的实现也是堆栈实现的
树:
引子:为什么树一般是二叉?而不是三叉四叉,为什么二叉树是先排左边,再排右边?
1. 二叉树在空间上比三叉或多叉树更加节省空间,而二叉树则是二分查找法的一种优化,而二分查找法是相对效率高的查找法(当然还有一个黄金分割法,但是实践证明二分查找更好一些),这就是为什么二叉树采用的是二叉
2. 为什么先排左边,因为如果数据是默认左边先致满,那么查找时左边没满那么右边一定是更少的,是一种规范化的体现
3. 树的遍历有:先序遍历(深度优先)、中序遍历(广度优先)、层序遍历