如何学习数据结构与算法?过来人的建议!!!

您所在的位置:网站首页 数据结构与算法推荐辅导书 如何学习数据结构与算法?过来人的建议!!!

如何学习数据结构与算法?过来人的建议!!!

2024-03-20 22:32| 来源: 网络整理| 查看: 265

我是 @Linux猿 ACM 老选手,目前从事 Linux 开发工作。在知乎上看到许多人不知道如何学习数据结构与算法以及怎样提升应用能力,故整理了这一篇学习《数据结构与算法》的文章,希望可以帮助到更多的小伙伴提升数据结构与算法实践能力!

先说下文章的定位,更适合于没有基础的,有一定基础的可以从实践提升部分开始。按照我下面整理的思路学习,保证能让你大幅提升数据结构与算法实践能力!

许多人有这样的疑问,《数据结构与算法》理论学习完了,但是做题还是不会;有的同学感觉数据结构与算法不知道怎么学习。那看这篇文章就对了,下面统统给你解决!

学习数据结构与算法分为两个步骤:

基础理论的学习;不断实践提升;

很简单吧,和把大象装进冰箱里一样的道理,哈哈!下面就来分别说一下:

基础理论的学习温馨提示:在学习之前建议先学习一门编程语言,这样在学习理论知识以及在实践环节就可以使用编程语言实现具体算法了,C/C++/Java/Python都可以。

这里先说下使用的书籍,大学里的教科书都可以,但我还是推荐使用严蔚敏的《数据结构》,公认的很好的书籍,而且,也是许多大学指定教材以及考研指定参考用书!我在上学以及考研过程中都用到过它,如下所示:

王道考研数据结构辅导书,虽然是考研辅导用书,但是这本书中有知识点分析、练习题以及答案,也是不错的哦!

大话数据结构,比较通俗易懂,适合自学:

如果想要深入提升算法能力,下面这几本最适合不过了。

刘汝佳《算法入门经典入门指南》第二版,紫书,该书分为了不同的篇章,有语言篇、基础篇以及竞赛篇,知识点非常全面,可以先学习基础的,然后再逐步提升!竞赛篇更适合于参加竞赛使用,把这本书过一篇你就是大牛啦,如下所示:

学习算法《挑战程序设计》也很不错,是混迹于各种算法竞赛的多个大牛写的书,该书也是分为不同的篇章,书中有许多实用技巧,学习完数据结构与算法可以看这本书:

学习算法那必须知道《算法导论》啦,书很好,但更倾向于一些理论证明,而且书很厚,如果初学者看很容易打击学习积极性,建议留作工具书使用:

最后一本重量级的《算法》,就不用我深入介绍了,用过的都说好,建议也留作工具书使用:

建议先收藏下,后面学习完数据结构与算法基础,深入学习的时候再看后面这几本书!

可以自己去淘宝或京东购买哈,上面只是方便说明而已!

如果想要快速学习,可以通过看视频的方式,学习的速度更快,但是没有看书记忆深刻。

看视频可以选择下面这些:

北京大学的数据结构课程(注意开课时间):

数据结构与算法_中国大学MOOC(慕课)

浙江大学的数据结构课程(注意开课时间):

数据结构_浙江大学_中国大学MOOC(慕课)

哔哩哔哩王道数据结构课程:

2020 王道考研 数据结构_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

可以在中国大学慕课网、哔哩哔哩、网易公开课等上面搜索相关视频。

知识的学习:

想要掌握基本概念,一般上完大学里的数据结构课就达到要求了。如果你是还没有上数据结构课呢?没关系~,可以自学,不要想着自学很难,自学反而记忆更深刻!

各章重点掌握:

【第一章】

算法的时间复杂度和空间复杂度;

【第二章】

线性表的顺序表示和链式表示;

【第三章】

掌握好栈和队列以及应用;

【第四章】

会使用字符串以及其分配;

【第五章】

一/二维数组以及广义表的表示;

【第六章】

树的三种遍历以及哈夫曼编码;

二叉树遍历

【第七章】

图的存储、遍历、连通性、判环以及最短路径;

【第九章】

静态查找、动态查找以及哈希表;

【第十章】

插入排序、快速排序、归并排序、基数排序以及其比较;

各种排序总结

2. 实践提升

实践提升可以通过许多的方法,比如:做项目,做练习题等。

我认为最实用、最直接、最快速的方法就是刷 ACM 算法题目,每个题目都会针对一个或多个算法进行考察,每道题目后台数据量足够大,可信度高。

温馨提示:在做题过程中遇到不会/不懂的知识点要学习总结哦!可以通过写博客的形式记录自己的成长。

下面就推荐几个OJ,大家可以去上面做题:

北京大学 POJ:

Welcome To PKU JudgeOnline

杭州电子科技大学 HDOJ:

Welcome to Hangzhou Dianzi University Online Judge

浙江大学 ZOJ:

ZOJ

国外 UvaOJ :

Online Judge - Home

LeetCode 平台:

力扣

做题技巧:

暴力大法好,可不要贪杯哦!在做每一题的过程中,不仅要 AC 题目,也要注意分析时间和空间复杂度,有的题目可以用暴力解决,也可以用更优的方法解决,尽量优化算法,优化时间和空间复杂度!

在完成编码,测试数据的时候,不仅要通过测试样例,自己还需要出多组数据测试,因为后台还有很多数据,你只有通过了后台的所有数据才算你通过。

测试数据可以这样出:最小的情况(下边界)、最大的情况(上边界)、中间情况、其它特殊情况等,这样一般是比较稳妥的方法。

做题过程如果遇到不会的知识点,可以自行学习一下,然后通过博客记录自己的学习过程,这样记忆更加深刻,还可以让其它的小伙伴看到你的分享。

我从接触ACM不久就开始使用博客记录自己的学习过程,到现在也有 8 年多了。

我的博客!

如果小伙伴们感觉找对应题目比较耗费时间,小猿已帮大家准备好了,可以通过我整理的《数据结构和算法实践指南》做题,题目是针对严蔚敏《数据结构》知识点精心筛选的题目,就说周不周到吧!如下所示:

《数据结构和算法实践指南》

预计一共 100 道题目,持续更新中,题目划分了难度等级,也有题目知识点分析,希望可以帮助到想要提升《数据结构与算法》的小伙伴,笔芯~

编程工具推荐:

VSCode

VSCode 是由微软开发的免费代码编辑器,支持很多功能,比如:代码调试、内置了Git 版本控制功能、代码补全(类似于 IntelliSense)、代码片段和代码重构等。

还支持用户个性化配置,例如改变主题颜色、键盘快捷方式等各种属性和参数等,强烈推荐!

可到官网下载:

VSCode 官网

安装和配置教程:

Windows平台 VSCode C/C++开发环境配置

2. Codeblocks

Codeblocks 是一个开放源码的全功能的跨平台C/C++集成开发环境,是一个不错的编程工具,各种C/C++的编程功能都有,但更推荐编程竞赛使用,比如:ACM比赛更推荐使用这个。

官方下载连接:

http://www.codeblocks.org/downloads

当然,还有其它的开发工具,比如:Dev-C++、Visual C++ 等,这些一般是学校里还在使用,更推荐使用 VSCode 和 Codeblocks。

下一篇文章将会写一下更深入的学习算法的文章,敬请期待哦~

感觉不错点赞支持下吧,点击关注获取更多干货哦!有问题评论区留言~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3