大一学生数据结构与算法的先后取舍

简介: 【来信】   在上学期,突然一天一位学长问我要选择哪个方向,指的是算法和一般的开发。我回答他算法,而他说我对语言学的太心急,太快,不像是喜欢算法的,并和我说算法玩玩就好,不要陷得太深,并建议我走一般开发的路子。虽然学长学的挺好,但就比我大一岁,我还是不太相信他说的。后来在学校acm实验室纳新时,我还是按捺加不住入了。   加入后,我开始对算法有了一点了解,并开始学习算法。

【来信】
  在上学期,突然一天一位学长问我要选择哪个方向,指的是算法和一般的开发。我回答他算法,而他说我对语言学的太心急,太快,不像是喜欢算法的,并和我说算法玩玩就好,不要陷得太深,并建议我走一般开发的路子。虽然学长学的挺好,但就比我大一岁,我还是不太相信他说的。后来在学校acm实验室纳新时,我还是按捺加不住入了。
  加入后,我开始对算法有了一点了解,并开始学习算法。本来我就是在我校oj上刷刷题。放假时借了本 《算法之道》,想在假期恶补一下,可是发现看不太懂。索性就不看了。因为acm实验室的题目在hdu上,我也转移到了hdu刷题。后来碰到不会的题,问了一下学长,他看完题告诉我该去学习动态规划了。于是我开始看博客,找动态规划的题目和讲解,后来发现一个博客上面讲的挺好,就一直在那个博客看,看到图的时候,我懵了,那时候我还不知道什么是数据结构,于是我又开始学数据结构。我想数据结构和算法同时学习。开始发现了一本很简单的书《啊哈算法》,在快看完时,我发现这本书讲的数据结构比较浅显,而且还不全,很多内容都在还没出版的下一册书上,我感觉对数据结构的讲解也有点乱,而且我对里面的数据结构看的也是模模糊糊,因为书内讲的太少,我也练的少,于是在快开学时我放弃了这本书。打算从头开始系统的系统的学习数据结构,于是找了好多书,找到了一本《大话数据结构》从头开始学习,然后去找对应的题目去练习,我也跟着实验室学长的步子,在hdu做练习,贪心,动态规划。可是我还没练熟呢,学长就切换到另一种算法了。当我意识到我的种种问题并打算从新开始时,也快开学了。开学后我在学数据结构做习题时担心我的算法学习。练习贪心和动态规划时又担心我的数据结构弄不太好。我什么都没学好。而且假期学的也因为练习过少,记住的并不太多。
  我现在不知道在学习算法和学习数据结构之间该哪个先学,哪个后学。我怕我学了数据结构,算法学习上被人拉开。可是不学数据结构,有些涉及到数据结构的题目还搞不定。我想同时学习,现在的结果就是都懂点,仅仅是懂点。我对acm也不太了解,我不知道我先学了数据结构,再去学习算法会不会有点晚。。老师给指点一下,哪个在先,哪个在后,我对这两个的先后难以做出取舍。如果同时学,我肯定都学不好,因为还要抽出大量时间学C++,补习英语。我也感觉时间有点紧。我现在可纠结了。

【回复】
  这封信看到一半的时候,我还真喜欢你东一榔头西一锤子的做法。作为一名大一的学生,就通过这样的方法去开阔视野,去到一个个未来要接触的空间中小试一把,这是很有价值的尝试。看到后面,我感觉应该和你探讨一种思路,怎样让自己的学习有序一些,有效一些。
  你所谓的算法、数据结构,大概是受了现在开课的体系,或者是某本书的影响了。实际上,这样分开看,是将这二者之间的血肉联系断开了的。在学习过程中,如果能够始终将两者融为一体看,那才是全面的学习。对于大规模的人才培养而言,必然需要用一种体系,实施专业能力的培养。要知道,我们所用的体系,是诸多可以用的体系中的一种,而不是绝对的唯一。作为你个人,在培养方案以外,自己自主地去拓展一些,抛开这些束缚,形成自己的体系,方显出更大的价值。
  实际上,我们所经历的基础教育,是人不敢也不会作个性化安排的教育。如果可能,在大学,我们可以尝试具备突破的能力。否则毕业时,都是同质的学生,说就业难,统统都难。同时,创新性也便少了许多。我希望你看到你之前学习的价值,少一些惊慌。《破除“系统学习”的情结》《 改变学习模式,在课外学习中获得突破》两篇旧文供你参考。这两篇文章谈得范一些,而你现在有明确地目标,是在算法与数据结构这一专业中很重要的基本功方面要加强,是更简单些的问题。放弃一些束缚,按着让自己更有效的、更个性的方式学习吧。
  以上是我对你面临问题的看法。而到具体安排的层面上,我觉得你一定不能落入到简单模仿学长的轨道中去。学长比你多一年的积累,他体会过的,你尚未经历,怎么能按他的步子走?我建议你现在也不必抱着一本数据结构的书“系统地学”,没有必要。两本比较浅显的书已经看过,建议你找一本专攻竞赛的书(红书、黑书,或其他)看,这样的书中的算法与数据结构是结合在一起的。若遇到里面讲的数据结构方面有些障碍了,也可以找本数据结构的课本,将相关的内容翻一翻,不排除将某段的内容深入学一下。要知道在用一本书时,不是拿到书,就从头到尾说要细读下去。大多数书,就是用到哪儿了,就看哪儿。一本书做主线,其余的都是帮衬。
  有你信中所说的积累,C++对你不会是负担,而至于英语,以及其他的科目,做好自己的时间安排,让学习、生活的保持一定的节奏,都不是问题。
  以上是我的观点,未尽之处,我们可以继续交流。祝学有所成!

目录
相关文章
|
11天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
13天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
100 1
|
12天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
|
11天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
102 14
|
15天前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
130 15
|
16天前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
105 11
|
11天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
16天前
|
机器学习/深度学习 传感器 算法
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
|
16天前
|
算法 安全 BI
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
|
15天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的XGBoost序列预测算法matlab仿真
基于WOA优化XGBoost的序列预测算法,利用鲸鱼优化算法自动寻优超参数,提升预测精度。结合MATLAB实现,适用于金融、气象等领域,具有较强非线性拟合能力,实验结果表明该方法显著优于传统模型。(238字)

热门文章

最新文章