一、项目开发
1.程序设计的本质?
程序 = 数据结构+算法
数据是计算机化的信息,它是计算机可以直接处理的基本和重要的对象。无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术应用等,都是对数据进行加工处理的过程。因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
数据结构和算法并不是一门教你编程的课,它们可以脱离任何的计算机程序设计语言,而只需要从抽象意义上去概括描述。说的简单一点,数据结构是一门告诉你数据在计算机里如何组织的课程,而算法是一门告诉你数据在计算机里如何运算的课程,前者是结构学、后者是数学。程序设计就像盖房子,数据结构是砖、瓦,而算法则是设计图纸。你若想盖房子首先必须要有原材料(数据结构),但这些原材料并不能自动地盖起你想要的房子,你必须按照设计图纸(算法)一砖一瓦地去砌,这样你才能拥有你想要的房子。数据结构是程序设计这座大厦的基础,没有基础,无论设计有多么高明,这座大厦不可能建造起来。算法则是程序设计之灵魂,它是程序设计的思想所在,没有灵魂没有思想那不叫程序,只是一堆杂乱无章的符号而已。在程序设计中,数据结构就像物质,而算法则是意识,这在哲学上可以理解为:意识是依赖与物质而存在的,物质是由意识而发展的。双方相互依赖,缺一不可!
2.写程序的目的?
目的是做数据处理,所有要能写程序得有下面的这些素质。
根据业务需要,制定或编制解决问题的流程。编辑程序的人应该是精通业务的人。
编辑计算机程序的要求:
1、 精通业务
2、 精通计算机语言
明确我们学习的内容和方向:
1、 解决问题的思路
2、 计算机语言
3、 思维方式的转变
编程的重点是解决问题的思路,而思路和计算机语言是没有关系的。
编程的难点是思维方式的转变,我们需要站在计算机的角度去思考和描述问题。
3.如何提升效率?
提升数据存取的速度,切合实际数据结构。
经典的数据结构是有限的,包括线性表、栈、队列、串、数组、二叉树、树、图、查找表等,而算法则是琳琅满目的,多种多样的。就好像数据结构是人体的各种组织、器官,算法则是人的思想。你可以用自己的思想去支配你的身体各个可以运动的器官随意运动。如果你想吃苹果,你可以削皮吃,可以带皮吃,只要你愿意,甚至你可以不洗就吃。但无论如何,你的器官还是你的器官,就那么几样,目的只有一个就是吃苹果,而方式却是随心所欲的!这就是算法的灵活性、不固定性。因此可以这样说:数据结构是死的,而算法是活的。
二、找工作
1.笔试题
笔试题也经常会考数据结构的使用,大部分情况都是链表的合并和拆分,比如这个题就是链表的拆分。
三、逻辑思维
数据结构和算法是一部发展史,发明他们就是为了“做出东西”,学习他们是为了不重复发明轮子,当你在“做东西”时遇到运行效率上的瓶颈,就可以参考这些前人的方案,当学完后,就能评估出一个“东西”以现在的技术是否可能做出来有人罗列xx结构、xx算法能干嘛干嘛全是屁话,书上都有。说白了这东西就是前人的公式,学习就是为了套公式解决问题的,解决世界难题就要发明新公式(算法/结构)能否做出来包括两点:效率是否能承受,功能是否能实现
一些语言包装了大量基础算法,用于快速实现功能,一般效率也是可以接受的当效率不能接受,就需要调整算法和结构,c甚至汇编题主应该是想做看得见摸得着的东西,所以应该选择抽象级别高的语言。先定这“东西”干嘛用的,拆分所有要实现的细节,逐个完成,当它运作起来并快如预期,就做完了是否有必要深入学,和你在实现过程中的效率需求有关。
四、学习方法
各种结构的思想很重要,无非就是每种结构的增、删、改、查,所有先的把每种结构的图示画出来,也就是理解思想,再用图形得到相应的文字,后再把文字翻译成代码。而不是一味的去追求代码量,记住能复制粘贴就复制粘贴。所有学数据结构就是学思想。