数据结构的作用及学习方法

  一、项目开发

  1.程序设计的本质?

  程序 = 数据结构 + 算法

  数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术应用等,都是对数据进行加工处理的过程。因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。

  数据结构和算法并不是一门教你编程的课,它们可以脱离任何的计算机程序设计语言,而只需要从抽象意义上去概括描述。说的简单一点,数据结构是一门告诉你数据在计算机里如何组织的课程,而算法是一门告诉你数据在计算机里如何运算的课程,前者是结构学、后者是数学。程序设计就像盖房子,数据结构是砖、瓦,而算法则是设计图纸。你若想盖房子首先必须要有原材料(数据结构),但这些原材料并不能自动地盖起你想要的房子,你必须按照设计图纸(算法)一砖一瓦地去砌,这样你才能拥有你想要的房子。数据结构是程序设计这座大厦的基础,没有基础,无论设计有多么高明,这座大厦不可能建造起来。算法则是程序设计之灵魂,它是程序设计的思想所在,没有灵魂没有思想那不叫程序,只是一堆杂乱无章的符号而已。在程序设计中,数据结构就像物质,而算法则是意识,这在哲学上可以理解为:意识是依赖与物质而存在的,物质是由意识而发展的。双方相互依赖,缺一不可!

  2.写程序的目的?

  目的是做数据处理,所有要能写程序得有下面的这些素质。

  根据业务需要,制定或编制解决问题的流程。编辑程序的人应该是精通业务的人。

  编辑计算机程序的要求:

  1、 精通业务

  2、 精通计算机语言

  明确我们学习的内容和方向:

  1、 解决问题的思路

  2、 计算机语言

  3、 思维方式的转变

  编程的重点是解决问题的思路,而思路和计算机语言是没有关系的。

  编程的难点是思维方式的转变,我们需要站在计算机的角度去思考和描述问题。

  3.如何提升效率?

  提升数据存取的速度,切合实际数据结构。

  最经典的数据结构是有限的,包括线性表、栈、队列、串、数组、二叉树、树、图、查找表等,而算法则是琳琅满目的,多种多样的。就好像数据结构是人体的各种组织、器官,算法则是人的思想。你可以用自己的思想去支配你的身体各个可以运动的器官随意运动。如果你想吃苹果,你可以削皮吃,可以带皮吃,只要你愿意,甚至你可以不洗就吃。但无论如何,你的器官还是你的器官,就那么几样,目的只有一个就是吃苹果,而方式却是随心所欲的!这就是算法的灵活性、不固定性。因此可以这样说:数据结构是死的,而算法是活的。

  二、找工作

  1.笔试题


  笔试题也经常会考数据结构的使用,大部分情况都是链表的合并和拆分,比如这个题就是链表的拆分。

  三、逻辑思维

  数据结构和算法是一部发展史,发明他们就是为了“做出东西”,学习他们是为了不重复发明轮子,当你在“做东西”时遇到运行效率上的瓶颈,就可以参考这些前人的方案,当学完后,就能评估出一个“东西”以现在的技术是否可能做出来有人罗列xx结构、xx算法能干嘛干嘛全是屁话,书上都有。说白了这东西就是前人的公式,学习就是为了套公式解决问题的,解决世界难题就要发明新公式(算法/结构)能否做出来包括两点:效率是否能承受,功能是否能实现

  一些语言包装了大量基础算法,用于快速实现功能,一般效率也是可以接受的当效率不能接受,就需要调整算法和结构,c甚至汇编题主应该是想做看得见摸得着的东西,所以应该选择抽象级别高的语言。先定这“东西”干嘛用的,拆分所有要实现的细节,逐个完成,当它运作起来并快如预期,就做完了是否有必要深入学,和你在实现过程中的效率需求有关。

  四、学习方法

  各种结构的思想很重要,无非就是每种结构的增、删、改、查,所有先的把每种结构的图示画出来,也就是理解思想,再用图形得到相应的文字,最后再把文字翻译成代码。而不是一味的去追求代码量,记住能复制粘贴就复制粘贴。所有学数据结构就是学思想。

the end

评论(3)