【数据结构与算法重学笔记】1、如何抓住重点,系统高效地学习数据结构与算法?
序、
感谢lh老哥提供的极客时间账号。之前一直觉得数据结构与算法基础不是很牢固,打算利用寒假时间,跟着极客时间王争老师的——“数据结构与算法之美”课程重新学一遍数据结构和算法,故作该笔记以备总结。
一、什么是数据结构?什么是算法
1、定义:
数据结构:一组数据的存储结构
举个例子:图书馆里图书十分多,为了方便管理,图书管理员一般会将书籍分门别类进行“存储”起来,既可以按年份分类存储,又可以按科目分类存储,还可以按书序号分类管理等等,这种按一定规律的分类就是“图书馆图书”的数据结构
算法:操作数据的一组方法
接上个例子:如何查找图书馆中的一本书呢?你既可以一本一本查找,也可以根据科目类别定位到具体的数据,再根据书的编号定位到具体书架查找,这些查找方式就是“算法”
2、二者关系
数据结构是为算法服务的,算法是建立在特定的数据结构的基础上的。
比如,数组这种数据结构具有随机访问的特点,我们常用二分查找这种算法来查找特定数据。但是链表这种数据结构不具有随机访问的特点,此时则不能用二分查找的算法来查找了。
二、学习的重点
1、复杂度分析
数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此我们需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。
2、数据结构与算法正文内容:
3、常用的10个数据结构和10个算法:
10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。