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

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

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

时间: 2024-09-25 12:24:44

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

答读者问(27):一个大一学生有关未来规划的疑问及答复

[来信] 周老师: 您好! 我是山东大学计算机科学与技术学院的大一新生,自从选择了这个专业以后,经常需要看别人的技术博客来学习知识,看到您的博客后十分敬佩,您这种工作勤奋又乐于帮助他人解决疑惑的精神实在是令人敬仰. 学生有个关于大学学习方向的问题,想了很久,但是还不是很清晰.一直想给您写信咨询,但又怕耽误您的工作,在这里先谢谢您能为我看这封信了. 首先介绍一下我的情况. 1)我大学四年的目标:不读研究生,直接去Microsoft.Google.BAT其中之一的一家公司做软件开发工程师.我通过搜索

大一学生不必为定位着急

读者来信中,不少是高年级了,才意识到该有些本事去社会上立足的,急着要找到出路扭转局面.但也有些刚学了一年,并且对专业学习有兴趣,也还做了些工作的家伙,赶着时髦,迷茫啊,着急啊什么的.大学生活刚开始,一口想吃成胖子.将来的定位一定是要有的,并且这个定位只有自己确定的才算合适,大一刚过,对专业,对行业的了解也正在一个形成的时期,这个问题得有,但并不急着要回答清楚.即使确定了,因为为时尚早,还可能再调整,再重新开始. 大一大二真很好,有资本试来试去,变来变去. 所以,低年级的孩纸们,不妨淡定多一些,认

答复大一学生:学会爬,再说跑

[来信] 我是一名计算机科学与技术软件开发与设计方向的大一学生.最近关于基础课很头疼.在上学期我们学了计算机导论.下学期学了c语言.但是没有学计算机组成原理 操作系统等  在大学刚开始老师就说这些学科很重要.因此我就选择了自学, 学习操作系统的时候教材要求要计算机组成原理 数据结构 c语言基础比较好,而且操作系统也分好几种UNIX windows等 我要选择一种学习还是怎样?. 然后我又就开始学计算机组成原理 发现有点难,而且我们也没有学习数据结构与算法这门课 请问老师我需要在这两门课上下些功夫

C++数据结构与算法专题

快速排序算法的C++实现 详解qsort函数的用法 C++求二个数的最大公约数与最小公倍数实例 小览CallStack(调用栈)(三)-用调试器脚本查看调用栈信息 小览call stack(调用栈) (二)--调用约定 小览call stack(调用栈) (一) C++/CLI中栈对象的设计问题 POJ 1694 C++ (排序) 高效实现Josephus算法 利用堆排序实现学生成绩管理 C++双向循环链表的操作与实现 基于Crtpto++的RSA签名算法 自定义函数使用map排序 C++数据结

《数据结构与算法 C语言版》—— 3.8习题

前言 "数据结构"是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,同时已成为其他理工科专业的热门课程.学好该课程,不仅对学习后续算法设计.数值分析.操作系统.编译原理等课程有很大帮助,而且在实际中有广泛的用途. 数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现.它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧. "数据结构"课程的特点是概念

数据结构 实践项目——数据结构、算法、程序设计

[项目1 - C/C++语言中函数参数传递的三种方式] C语言提供了两种函数参数传递的方式:传值和传地址.在C++中,又拓展了引用方式.通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备. 下面是希望能够交换两个整型变量的swap函数的三个版本(从课程主页中可以找到项目链接,复制后就能调试,不必费事敲代码): //(1)传值 void myswap(int x, int y) { int t; t=x; x=y; y=t; } //(2)传地址 void myswap(int *

信息与计算科学大三学生,加强算法还是做点项目?

[来信] 贺老师你好,我是一个大学生.我也看过你的专栏,觉得很有帮助. 我现在学习C和数据结构有一些时间了,也基本上掌握了里面主要内容.然后我现在不知道该做一些什么比较好,我想过去做一些小游戏,但是C又做不了界面.然后对于一些让我学习比如组成原理等相当基础的书籍的建议,我有这个打算,但是又有一点有心无力,总觉得现在再学习理论知识对我的帮助不明显. 我现在非常的郁闷,我希望老师能给我一个建议,到底是要去做些什么?学些什么? 谢谢回复. [我的回复] 有些情况你没有讲清楚,如你是几年级的,什么专业,

给想提高水平的大一学生

[来信]尊敬的贺老师: 我是广西的一名大一学生,在此,想谢谢您,我在CSDN论坛上看了您写的文章很受益匪浅,特别是那篇给吵程序的学生,给我很大的感触.我大一上学期有学过C语言,但是学得并不怎么好,除了会点循环.条件选择的语句外,其它的就像没学过是的,特别是在指针.链表这块,从这学期开始,我一直坚持每周写5到6道ACM的题,您也说过,编程量是很重要的,可我只会一些简单的,稍微有点难度的,我就败下阵了,您能给我支个招么?如何把C语言提高了,主要是我想在嵌入式这方面发展,可对于C语言在底层操作是如何实

一位大一学生的N个问题

[问题] 大学怎样才能做到不随波逐流?大学怎样做到独善其身?大学里,看到很多人做一件事,觉得自己不这样会格格不入,例如大学课堂,没人听老师讲课,都是低头族,玩手机,你如果不这样,别人会说你傻?大学里会有许多不公平,如何调整自己?比如班干部竟选,比如党员.大学里该不该谈恋爱呢?谈恋爱影响学习吗?大学里老师只是教一个学期,有必要和老师多沟通吗?大学里,除了和宿舍人比较熟,没有交友圈,怎样扩大自己的交友圈? [回复] 一口气这么多问题,看来是一位正在学着思考的同学.每个问题,似乎都能展开很多,但我更愿