【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/qq_36000403/article/details/90730469
出自【zzf__的博客】
1.什么是数据结构和算法?
从广义上讲,数据结构就是指一组数据的存储结构,算法就是操作数据的一组方法
2.数据结构和算法又是什么关系呢?
数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果我们选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。
3.学什么?
3.1数据结构和算法解决的是如何更省,更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法
3.2 学习最常用,最基础的20个数据结构与算法,学习他们的”来历”,”自身的特点”,”适合解决的问题”,”实际的应用场景”
10个数据结构:数组 链表 栈 队列 散列表 二叉树 堆 跳表 图 Trie数
10个算法:递归 排序 二分查找 搜索 哈希算法 贪心算法 分治算法 回溯算法 字符串匹配算法
4.怎么学?
(学习过程中,千万不要被动地记忆,更多地辩证地思考,多问为什么?坚持下去 写代码的时候会不由自主地考虑很多性能方面的问题)
- 边学边练,适度刷题
适度刷题,但一定不要浪费太多时间在刷题上,我们学习的目的还是掌握,然后应用。除非你要面试Google Facebook这样的公司,它们的算法题目是非常非常难的,必须大量刷题,才能在短期内提升应试正确率。如果是应对国内公司的技术面试,即便是BAT这样的公司,你只要彻底掌握这个专栏的内容,就足以应对 - 多问,多思考,多互动
避免一知半解 - 打怪升级学习法
- 知识需要沉淀,不要想试图一下子掌握所有。