计科专业从事软件开发多年,在学校里面数据结构这个课程开设过,基本上第一次学习数据结构C语言版本脑子几乎都是晕乎的,因为搞不懂指针来回指向,后来跟一个前辈请教如何学这东西,先把指针彻底搞明白,然后再学习数据模型,最后一步直接用C语言代码来实现,开始不要尝试着都能给搞明白,基础不够很难理解透彻,于是专门拿出时间把C语言的指针研究了一遍,由于当时不像现在的互联网上资料那么多, 只能在网上找点抽象的例子进行研究,对指针彻底的了解是看了林锐博士写的高质量C/C++编程,里面对指针的介绍特别深刻,从此指针也就慢慢理解了。
掌握了指针之后再去搞数据结构,想比之前已经轻松太多了,也不要太着急直接去尝试搞代码先把数据模型搞明白,数据模型是连接数据的桥梁,链表,队列,栈,二叉树等等概念,然后了解每个数据模型的数据结构,以及需要做的动作,在没写代码之前先把这些数据模型要做什么事情搞清楚,然后才去尝试写代码,一般来讲第一个模型写的比较费劲后面就以次类推了,万事开头难,数据结构书本主要分为多种编程语言的,有C语言,C++,java版本数据机构,对于这类的书籍讲解差异不是很大,没有必要太过追求那本书,主要是还是模型思想和代码实现.学习数据结构有什么用?现在就拿自己从事的行业来讲,C/C++,数据结构算是基本功,设计一个功能模块除了选择编程语言之外剩下的就是构造数据模型,在C语言里面叫结构体,在C++里面属于类,如何设计有时候就会借助数据结构里面的基本模型,常见的编程模型里面队列和链表用的比较多,一般的设计模型中都会涉及到消息队列,就是典型的一种数据模型,如果有数据结构基础这些东西理解起来就非常快,所谓的编程基础除了基本的编程语法基础还有数据模型等基础。
学习数据结构也非常有助于算法理解,再复杂的算法也是由基础的数据结构算法构造起来的,任何一种算法也不是什么空中楼阁都是无数个小的基础算法堆积起来的,没有这些基础直接从事算法的学习,几乎是不太可能的事情。
懂得常见的数据结构模型,更容易看懂大型的项目的代码,拿到一份源码首先要梳理的是功能列表以及里面数据内容的传递,懂数据结构对于理解框架非常有好处,要玩大型的项目,先从看懂基础的代码开始,研究代码需要一定的基础,有了模型概念对于有框架的代码研究起来快一些。
在刚入行的时候经常听到老程序员说到,一个新的功能模块只要数据结构都梳理清楚了,就可以考虑写代码了,不要看一个功能模块里面一个小小的类或者结构体,里面每个变量可能都会串联着一串功能,所以一个结构体设计完毕了,基本功能模块也就设计清楚了。
很多初学者都有这么一个不好的习惯,一边写着代码代码一边设计思路,这是编程大忌,编程首先要思路清晰,代码只是把你的思路展示出来,具体的实现好坏就要看基本功了,同样的功能不同的设计人员设计出来会有截然不同的效果,在性质以及实现效果上都有所差异,本质来讲是实力的差异,所以写代码的就是为了实现既定的思路,数据结构是设计结构体或者类的基本依据。
希望能帮到你。
数据结构是计算机存储、组织数据的方式,包括数组、链表、栈、二叉树、哈希表等。
算法是解决问题的方案,是为数据结构服务的,算法能对数据结构中的数据进行各种处理,比如查找数组中的数据,或对其进行排序等等。
有很多程序员能够非常熟练地运用编程语言,但是对于自己开发的应用的效率和未来的改进方向并没有非常清晰的认识和规划,这往往是因为没有掌握好数据结构和算法的知识,不能从全局角度把握问题的解决和优化方案。
因此,对于程序员来说,学习数据结构和算法是非常有用的。
对数据结构和算法的应用随处可见应用数据结构和算法可以很高效地解决常见问题。
我们买票排队,应用的数据结构就是队列,特点是先进先出;物流装车应用的数据结构就是栈,特点是先进后出(最先被装到车上的货物最后才能取出来)。
当你打开一个音乐APP时,你可以将歌曲按照曲名或是歌手排序,这就是排序算法在实际中的应用。
这些看上去司空见惯的应用或者功能,其实都用到了数据结构和算法的思想。
数据结构和算法会对问题解决的质量和性能产生影响解决一个问题有很多种方法,但有些方法会比其他方法更好,学习数据结构和算法就是学习高质量的解决方案。
假设你要登录一个网站,该网站必须核实你是否有其账户,因此必须在其数据库中查找你的用户名。
如果你的用户名为KarImageddon,该网站可从以A打头的部分开始查找(顺序查找),但更合乎逻辑的做法是从中间开始查找(二分查找)。
如果这个网站的注册用户只有几百个,用户或许感受不到两种查找方式所花费时间的差异,但如果注册用户的数量达到了几千万甚至是几个亿,不同查找算法的效率对网站响应速度的影响就非常明显了。
3.数据结构和算法思想是程序的灵魂数据结构和算法虽然看上去很枯燥,但它们其实是计算机科学的核心技术和原理。
著名的瑞士计算机科学家沃思(N.Wirth)教授曾提出:算法 + 数据结构=程序编程的本质是算法,而算法的本质是解决问题。
程序设计的实质是对实际问题设计/选择好的数据结构和好的算法。
对任何专业技术人员来说,理解数据结构和算法都非常重要。
Java、Python、C/C++、Javascript、PHP、R语言等各种编程语言不断更新迭代,但经典的数据结构和算法思想却历久弥新,指导着程序员们针对问题的特点和数据的规模设计出合适的解决方案。
基于上述原因,数据结构和算法也是很多互联网公司面试的必考题目。
对任何事都具备逻辑思维的人能够编写非常优秀的代码,而缺乏这种逻辑能力的人无论多么努力学习‘编程’也无济于事。
数据结构和算法不仅是程序员的必学知识,也可以帮助普通人解决问题,培养高效、快速安排资源和解决问题的能力。
在这里推荐一本非常有趣的算法入门书《算法图解》,这本书使用了丰富的插图和示例,对应用广泛的数据结构和算法原理进行了生动形象地阐述,可以帮助读者快速地理解以往觉得晦涩难懂的专业概念,不仅适合计算机专业的学生入门,也适合非专业的读者用来学习解决问题的思路。
《算法图解》,作者:[美]Aditya Bhargava,译者:袁国忠对计算机知识和图书感兴趣的朋友可以关注@人民邮电出版社
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)