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

【来信】

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

  加入后,我开始对算法有了一点了解,并开始学习算法。本来我就是在我校oj上刷刷题。放假时借了本 《算法之道》,想在假期恶补一下,可是发现看不太懂。索性就不看了。因为acm实验室的题目在hdu上,我也转移到了hdu刷题。后来碰到不会的题,问了一下学长,他看完题告诉我该去学习动态规划了。于是我开始看博客,找动态规划的题目和讲解,后来发现一个博客上面讲的挺好,就一直在那个博客看,看到图的时候,我懵了,那时候我还不知道什么是数据结构,于是我又开始学数据结构。我想数据结构和算法同时学习。开始发现了一本很简单的书《啊哈算法》,在快看完时,我发现这本书讲的数据结构比较浅显,而且还不全,很多内容都在还没出版的下一册书上,我感觉对数据结构的讲解也有点乱,而且我对里面的数据结构看的也是模模糊糊,因为书内讲的太少,我也练的少,于是在快开学时我放弃了这本书。打算从头开始系统的系统的学习数据结构,于是找了好多书,找到了一本《大话数据结构》从头开始学习,然后去找对应的题目去练习,我也跟着实验室学长的步子,在hdu做练习,贪心,动态规划。可是我还没练熟呢,学长就切换到另一种算法了。当我意识到我的种种问题并打算从新开始时,也快开学了。开学后我在学数据结构做习题时担心我的算法学习。练习贪心和动态规划时又担心我的数据结构弄不太好。我什么都没学好。而且假期学的也因为练习过少,记住的并不太多。

  我现在不知道在学习算法和学习数据结构之间该哪个先学,哪个后学。我怕我学了数据结构,算法学习上被人拉开。可是不学数据结构,有些涉及到数据结构的题目还搞不定。我想同时学习,现在的结果就是都懂点,仅仅是懂点。我对acm也不太了解,我不知道我先学了数据结构,再去学习算法会不会有点晚。。老师给指点一下,哪个在先,哪个在后,我对这两个的先后难以做出取舍。如果同时学,我肯定都学不好,因为还要抽出大量时间学C++,补习英语。我也感觉时间有点紧。我现在可纠结了。

【回复】

  这封信看到一半的时候,我还真喜欢你东一榔头西一锤子的做法。作为一名大一的学生,就通过这样的方法去开阔视野,去到一个个未来要接触的空间中小试一把,这是很有价值的尝试。看到后面,我感觉应该和你探讨一种思路,怎样让自己的学习有序一些,有效一些。

  你所谓的算法、数据结构,大概是受了现在开课的体系,或者是某本书的影响了。实际上,这样分开看,是将这二者之间的血肉联系断开了的。在学习过程中,如果能够始终将两者融为一体看,那才是全面的学习。对于大规模的人才培养而言,必然需要用一种体系,实施专业能力的培养。要知道,我们所用的体系,是诸多可以用的体系中的一种,而不是绝对的唯一。作为你个人,在培养方案以外,自己自主地去拓展一些,抛开这些束缚,形成自己的体系,方显出更大的价值。

  实际上,我们所经历的基础教育,是人不敢也不会作个性化安排的教育。如果可能,在大学,我们可以尝试具备突破的能力。否则毕业时,都是同质的学生,说就业难,统统都难。同时,创新性也便少了许多。我希望你看到你之前学习的价值,少一些惊慌。《破除“系统学习”的情结》《 改变学习模式,在课外学习中获得突破》两篇旧文供你参考。这两篇文章谈得范一些,而你现在有明确地目标,是在算法与数据结构这一专业中很重要的基本功方面要加强,是更简单些的问题。放弃一些束缚,按着让自己更有效的、更个性的方式学习吧。

  以上是我对你面临问题的看法。而到具体安排的层面上,我觉得你一定不能落入到简单模仿学长的轨道中去。学长比你多一年的积累,他体会过的,你尚未经历,怎么能按他的步子走?我建议你现在也不必抱着一本数据结构的书“系统地学”,没有必要。两本比较浅显的书已经看过,建议你找一本专攻竞赛的书(红书、黑书,或其他)看,这样的书中的算法与数据结构是结合在一起的。若遇到里面讲的数据结构方面有些障碍了,也可以找本数据结构的课本,将相关的内容翻一翻,不排除将某段的内容深入学一下。要知道在用一本书时,不是拿到书,就从头到尾说要细读下去。大多数书,就是用到哪儿了,就看哪儿。一本书做主线,其余的都是帮衬。

  有你信中所说的积累,C++对你不会是负担,而至于英语,以及其他的科目,做好自己的时间安排,让学习、生活的保持一定的节奏,都不是问题。

  以上是我的观点,未尽之处,我们可以继续交流。祝学有所成!

时间: 2024-11-03 21:13:08

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

Java数据结构和算法(二)——数组

数组的用处是什么呢?--当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录那些学生的缺勤次数的时候,数组也是很有用.数组可以进行插入,删除,查找等. 1)创建和内存分配 Java中有两种数据类型,基本类型和对象类型,也有人称为引用类型,Java中把数组当成对象,创建数组时使用new操作符. int array[] = new int[10]; 既然是对象,那么array便是数组的一个引用,根据Java编程思想(一) -- 一切都是

Pascal数据结构与算法

第一章 数据结构与算法的引入 1.1 数据结构的基本概念 一. 学习数据结构的意义 程序设计 = 数据结构 + 算法 目前,80%的待处理的数据具有“算法简单”(四则运算.检索.排序等),“对象复杂”(数据类型不同.数据量大.需要保存)等特点,故合理组织数据.选择较好的数据结构可为高效算法(时间少.占用空间小)提供理想的对象. 二.基本术语 1.数据(data): 是对客观事物的符号的表示,是所有能输入到计算机中并被计算机程序处理的符号的总称.(P1表1-1中,学号.姓名.性别.民族等列为字符型

【系列文章】数据结构与算法——图

---恢复内容开始--- 接触C语言是很早以前的事了,大概是在初中二年级.后来发现只学语言,不学算法根本没用,于是乎萌发了学习数据结构和算法的想法,但一直没有什么实际进展.直到今天,才决定好好研究一番(ps:今年大一,甚是惭愧),顺便把学习过程记录在这一系列文章之中.好了,废话不多说,开始我这一系列的文章.文中可能有错误,如果你发现了,我恳请你帮我指出.谢谢. 图——图能很方便的描述一些实际问题,常用于寻找最优解类型的问题.其他相关概念,百度百科说的很清楚了. 学习图大概有以下几个过程. 一.创

【转】数据结构与算法(下)

这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算法相关内容,文章中如有错误,欢迎指出. 一.概述 二.查找算法 三.排序算法 四.其它算法 五.常见算法题 六.总结 一.概述 以前看到这样一句话,语言只是工具,算法才是程序设计的灵魂.的确,算法在计算机科学中的地位真的很重要,在很多大公司的笔试面试中,算法掌握程度的考察都占据了很大一部分.不管是为了面试还是自身编程能力的提升,花时间去研究常见的算法还是很有必要的.下面是自己对于算法这

Java数据结构和算法(一)——开篇

这篇文章里面不讲技术,抽空讲讲技术和通俗之间有一种奇特的关系,还有驱动力学习的东西. 1)技术与通俗 大学里面那本严蔚敏的数据结构不厚,内容丰富,但是复杂问题的讲解方面篇幅这样就少了,比较难理解,c也不是很擅长,但是基本的思路还是有的. 简单的链表,数组,堆栈,队列,图,几个排序算法. 后面看到知乎涛吴的回答,当时很震撼,这里引用一下他的回答: 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而

Java 数据结构与算法分析学习

由于之前面试android的时候考到了很多关于java的知识,所以这次重温数据结构知识就打算用java来学习,毕竟android是以java为基础的,而且我现在学习的j2ee架构也是以java为基础的. java中的类就是对现实世界的对象的一种抽象,例如人就是一个类别,人有名字,联系电话,住址等成员属性,人拥有说话,吃饭,走路等成员方法.类就是这样,定义了一种对象,它有什么,会做什么. 继承——子类就是父类的一种特定类别.例如学生就是人的子类,学生属于人,是特定的一类人.所以我们让学生继承人,这

javascript数据结构和算法 零(前记+序言)

前记 这本书Data Structure and Algorithm with Javascript 我将其翻译成<< javascript 数据结构和算法>> 为什么这么翻译?而不是翻译成"用javascript实现数据结构和算法" 原因有二: 一个,我觉的它更加简洁,第二个,我是想强调我们在这里使用的是javascript. 我不喜欢一些翻译的人把一个简单的语句进行加工,搞得晦涩难懂.我更喜欢外国人写书的 那种原汁原味.同样,我很喜欢外国人的那种分享精神,它

数据结构与算法经典问题解析 Java语言描述pdf

下载地址:网盘下载 内容简介 本书以Java为描述语言,介绍了数据结构与算法的基本知识.书中结合企业界的工程实践提炼教学内容,特别对数据结构中易混淆的问题进行了梳理,对每一个问题提出不同的解决方案.本书是一本优秀的数据结构方面的教材. 目录 译者序 前言 第1章绪论1 1.1变量1 1.2数据类型1 1.3数据结构2 1.4抽象数据类型2 1.5什么是算法3 1.6为什么需要算法分析3 1.7算法分析的目的3 1.8什么是运行时间分析4 1.9如何比较算法4 1.10什么是增长率4 1.11常用

我是如何学习数据结构与算法的?

数据结构与算法的地位对于一个程序员来说不言而喻.今天这篇文章不是来劝你们学习数据结构与算法的,也不是来和你们说数据结构与算法有多重要.主要是最近几天后台有读者问我是如何学习数据结构与算法的,有没有什么捷径,是要看视频还是看书,去哪刷题等-..而且有些还是大三大四的,搞的我都替你们着急.担心-..所以我今天就分享下自己平时都是怎么学习的. 学习算法的捷径就是多刷题 说实话,要说捷径,我觉得就是脚踏实地着多动手去刷题,多刷题.但是,如果你是小白,也就是说,你连常见的数据结构,如链表.树以及常见的算法