导航:首页 > 源码编译 > 数据结构与算法感悟

数据结构与算法感悟

发布时间:2022-08-24 23:03:05

‘壹’ 数据结构学的到底是什么,和算法的关系

  1. 所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只有找到了一个组织数据的最佳方式,算法的运用才会事半功倍。

  2. 一般来说我觉得先学算法比较好,但算法和数据结构都是相辅相成的,要学好算法要有一定数据结构的基础,要学数据结构亦要有算法基础。但算法比数据结构更重要一些,因为没有算法只有数据结构是没用的。

  3. 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。

  4. 从计算机的角度讲,程序是用一种计算机能理解并执行的计算机语言描述解决问题的方法步骤。程序设计:是分析解决问题的方法步骤,并将其记录下来的过程。算法:解决问题的方法步骤。

‘贰’ 求一篇学习心得体会

一篇好的学习心得,必须要结合自己的实际情况,深入的分析这门学科带给你的感受,
如果一味的写理论知识,是得不到高分的,我从网上搜索了一个大二学生学习计算机的心得,你可以参考一下,可以结合你自己的实际情况加以修改。
大一大二两年软件开发学习心得
出处:博客园
转眼间在从大一踏进学校的校门到现在刚刚好两年了,在这两年里面,有学到了不少东西,包括怎么去独立生活,怎么去与人沟通,等等,当然最重要的还是学到了自己想要的专业知识。
大一的时候主要是学习计算机导论和C语言,对于急于想看到效果的我,C语言学起来就比较枯燥,因为C语言编写出来的程序主要还是在命令行的操作,我很想开发出windows界面的软件出来,但是没有办法,C语言是基础,没有这个基础就往高处想,恐怕梦想不会那么容易实现。所以我就认真的把C语言的基础打好,先掌握好里面的语法,程序控制逻辑和一些基本的算法,说真的,尽管是比较枯燥,但是一旦陷入了编程中,自然就会发现其中的快乐。
大一第二学期的时候开始接触NIIT的课程,平时虽然一点作业都没有,但是我上课的时候不是那么认真听课的人,所以课后总是要花时间来看看和理解老师上课的例子,在这个学期中,我们主要学习了C++和Java,都是刚刚开始接触到面向对象的语言中来,由于对一些面向对象的特性不熟悉,毕竟是刚开始接触这方面的语言,所以学起来就有点吃力,再加上平时实践的时间比较少。
终于到了学期的期末,学期期末的项目是使用Java语言开发一个网络的聊天室,在我还没有开发之前一听到这个项目,我做梦都没有想到我可以编写出一个聊天室出来,但是既然是课程提出来的项目,就一定有它的理由,我也相信最后一定也可以完成它。功夫不负有心人,经过接近一个月的研究,我总于完成了我来到学校的第一件作品。在这个月中,我不断得查阅资料,询问老师,平时和同学多交流,终于在最后的评审中,我获得了全班第二的好成绩。通过这个学期的开发中,我几乎把整个学期学到的知识都用到了我的聊天室里面,所以在实践中也等于复习了这个学期所学的内容,而且我发现这样的实践,比我在平时课后看书,看资料所学到的还多。
大二的第一学期,进入了数据库和高级Java的学习,说真的,在学数据库的那段时期是最烦的,因为每天就学了一大堆SQL的语言,非常的枯燥,都是关于怎么去查找数据表格里面的内容,那是时期,因为课堂上听课了之后觉得都是比较简单的,所以课后很少去动手。到了后来项目开发中,我才发现数据库的重要性,整个系统的信息都是存储在数据库里面的,所有的在程序中对数据的操作都是等同于对数据的增删改查询操作。
在期末的项目中,根据项目所要求的内容,我不断翻看以前没有掌握好的数据库知识,感觉如果我前面有认真学习的话,到了后面开发项目的时候就不会那么吃力了。对此,我总结出,如果在前面学数据库的时候不要单纯学习SQL的语言,把数据库和程序结合起来,如果老师的讲课的过程中可以说清楚数据库怎么绑定到程序中去使用的话,那么我想对于我来说我会更加有兴趣去学好数据库,因为只要在程序开发中才可以去体验数据库的魅力和重大的作用。
在学期末的J2EE开发电子商务网站中,我学到了很多关于怎么制作动态网页的一些必要元素的基本的原理,体会到软件设计在网站开发中的重要性。
转眼间来到了大二的第二个学期,可以说在这个学期中,是我最有感触,学到最多知识,达到质的飞跃的一个重要学期。有了前面几个学期的学习基础,我对面向对象语言已经基本掌握清楚,运用起来也觉得没有什么特别困难,基本已经入门了,这个学期主要是进入了.net的学习。
好的开发工具是保证效率的一个重要因素,Microsoft
Visual
Studio
.NET
2003就是这样的一个开发工具,令我刚刚一接触就深深得爱上了它,它的易学易用令我对编程的兴趣倍增,以前学习Java之所以见效不大是因为没有好的开发工具和环境,总是在环境配置中浪费大量的时间,而真正的涉及到编程很少,所以这也是我以前为什么学起来没有那么有兴趣的原因。
我觉得学编程就应该学习它的思想,编写代码就应该尽量避免写出与逻辑无关的代码,比如界面代码可以让机器去自动生成不必浪费时间手动去编写,所以好的开发工具可以帮助我们做到这一点,只编程逻辑代码,很多代码都可以让机器去自动生成。在.net就可以快速地开发既有漂亮界面也有强大功能的程序。有了这么好的开发工具,所以令我顿时感悟,有种相见恨晚的感觉。
有了好的开发工具后接下来要做什么呢,当我们为之兴奋的时候,当然是很有欲望去做出某某自己很想做的东西,因为你一拿到好的开发工具,就会整天的陷入开发状态,对其爱不释手,一开始我是试着开发一个Flash播放器,感觉编写起来不是编写起来不是那么难,因为前面已经有学习Java的经验了,初次学习.net的时候选择编写Flash播放器也是有理由的,一方面是程序比较简单,另一方面的涉及到的控件和界面比较多,所以一开始接触这样的语言就首先学习怎么去调用.net平台上提供的控件,只要掌握好这些控件,以后编写windows界面的控件就简单很多了。
经过几天的时间,终于把Flash播放器做出来了,以后想Flash影集的时候都用自己开发的播放器进行播放,感觉别有一翻滋味,因为这就是为自己量身定做的,这就使我再一次感觉到开发的乐趣。
每年的11月份都有一个高校杯的软件设计大赛,这时间正到了5月,我们屈指一算,离比赛的时间还有6个月的时间,这段时间我正处在开发的兴奋期,所以对这个软件设计比赛就感兴趣起来,第一是可以知道自己的编程程度和其他人的距离,第二是可以利用这个一个项目实践来锻炼自己的开发技能,第三是可以锻炼团队的合作。以前几乎都是自己开发的软件,很少和其他人合作,所以就令我想到这种开发模式将来带到工作会另自己处于不利的地位,现在不是都讲究团队的合作么。
经过思考后,我找来另外的两个志同道合的同学,利用五一放假的时间想好主题,还有进行需求分析,最后定下来“多媒体日记本”这一项目。定好题目后我们就进行了分工,一个人负责数据库方面,一个人负责界面的美化和界面的布局,另外一个负责功能的实现,分好工后我们立刻就展开了工作,在合作的过程中,我们学到了许多课本上没讲的或者只是粗略带过的知识,有些特别的技术难点还要到网上去搜索,查阅有关的资料,在语言方面我们几乎把.net里面的基本框架和特性都用上了,这样对于我们学习就达到了事半功倍的效果,边学边做学到的知识可以很快吸收,又可以很快得运用的实际中去,这是我通过这个项目感触最深的。很快就到了期末,学校举行“IT精英杯”软件大赛,我们小组终于不负众望,拿到了一等奖的好成绩。
经过这次我比赛我总结出心得,首先比赛的题目要定好,一方面是开发的软件要有实用性和市场前景,另一方面还要在实用性上加上点创新,给人耳目一新的感觉,我觉得只要先抓住好这两点,做出来的软件才会给人留下好的印象。
利用暑假的时间,我又参加系里面组织的软件工程培训,又一次在开发项目中学到了许多许多看书只能朦胧懂的知识。
转眼间大三第一个学期就开学了,回顾这两年来学习软件开发的经历,写了这样的一遍心得,一方面算是对自己的总结,另一方面也可以拿出来给大家参考和交流。最后我还是要再归纳一次,总结出如何才可以比较容易地进入学习状态达到快速开发的目的。
1.
打好基础,掌握好C语言C++基础的语言,对学习数据结构和算法有很大的帮助。
2.
面向对象是高级也是最流行的语言,所有的面向对象语言几乎都是通用的,结构和特性都差不多,只要掌握和归纳好它们的一些共同的特性,哪怕将来转向其他的语言都是轻而易举,得心应手,达到融会贯通的效果。
3.
好的开发工具是你提高开发效率,提高编程兴趣的前提,学习语言的过程中还应该研究怎么利用开发工具有效地提高开发的效率。
4.
善于总结,在开发过程中我们可以总结出许许多多规律性的东西,这些规律一方面可以让我们避免在以后的开发中犯同样的错误,另一方面对我们掌握其他的规律都是有所帮助的,规律都是交叉在一起的。跟着规律走,实事求是。
5.
项目开发是最好的学习方法,这一点是我最有感触的,软件开发是实践性很强的活动,但靠理论知识学起来比较吃力,而且枯燥无味,学习种理论学习和开发实践的比例应该是1:2,而且是交叉进行。这样才可以比较快的掌握一个知识点。
6.
团队合作,现在的项目几乎很少一个人去完成,频繁的沟通和密切的配合是成功的必要条件。
以上回答你满意么?

‘叁’ 数据结构与算法的学习心得

数据结构与算法是相辅相成的,每一种数据结构都有它对应的几种常用算法,数据结构与算法必须同时学。
按照书上的顺序学习,通常是链表→队列→堆栈→树→图的顺序,难度循序渐进。一定要自己上机实验

‘肆’ 数据结构和算法为什么这么重要

算法都是从生活里得到的,生活里用的很自如,应用到程序里一样会很方便。
比如最简单的,中国有那么多省,每个省有那么多市,每个市有那么多区县之类的,看到一个小地方,怎么才能知道它在哪,很明显,去看它在哪个区,哪个市,哪个省。
这就是树的作用,从子节点通过父节点去确定它的位置。这个同样应用在文件管理,还有特殊的比如要求设计个数据库,能够体现部门,小组的包含关系,很简单,在小组里面加个父节点的字段就可以了。

再比如查字典,给了一个字,怎么才能查到它?通过读音,知道它的首字母,就很容易的去从首字母找到它。如果字典是乱的,就完全无从下手,这就是hash算法的东西,通过能够区分出来的特征,缩小查找范围,加快查找效率。
同样的很多,都是可以用到程序里的,很容易理解

‘伍’ 求一数据结构课程设计心得体会。

数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与大家共勉。

首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到Microsoft 公司的.NET产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var 看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sql server2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。

通过一个暑假的学习,基本搞清楚了理论方面的东西,具体怎么用也不是很清楚。但是这为这学期的课程设计打下了铺垫。

来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。遇到什么就学什么。我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,just do it!我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。最后我选择了roseUML建模工具。在此之前,我脑袋里面没有软件建模的思想,什么UML建模对我而言就是一张空白的纸。但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,就没有不能解决的知识难题。以及后来的数据库分析的时候用到的powerdesigner也是一样。

开发的时候我想过用什么架构,c/s模式?模式有很多,怎么选择?我就上网搜索现在最流行的架构是什么。结果搜到了MVC架构,就是你啦。我决定用这个架构,不会,没关系,咱学。Just do it!前期工作准备好后,那么我就得把我暑假学的.net加以实践。这个时候我更加深入的了解了利用ado.Net操纵数据库的知识。并且对数据库里面的存储过程有了比较深入的了解。经过大概2个多星期的奋斗,我完成了我的数据库课程设计--基于.net数据集的图书馆管理系统。并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。

与其临渊羡鱼,不如退而结网。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML[至少微软是这么宣传的],我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,just do it!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!

我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。

‘陆’ 如何学习数据结构与算法

1、记住数据结构,记住算法思想(是什么)

记住数据结构最直观的东西;记忆该数据结构的定义、性质、特点等。很多东西的理解和创新都是以记忆为前提的。


2、进行大量相关编程练习,用编程语言去实现某一数据结构上的算法(怎么办)


很多时候,理解一个算法很容易,很容易在纸上去模拟一个算法的实现过程。但具体实现,则是另一回事。一定得先自己思考,然后再去看书中给的编程语言实现。


3、“记住”特定情景下,利用某一特定的数据结构,去解决问题 (为什么+怎么办)


每介绍一种数据结构,浙大数据结构与算法的MOOC课程都会有一个实际问题来作为“引子”,回答了“这种数据结构为什么会出现”。有的是为了实现特定的操作,有的是为了时间和空间上(大部分考虑的是时间复杂性)效率的更高(所以,没事的时候,分析一下算法的时间复杂性)。这些东西,我们也须理解记忆。每一数据结构都有其特性,去解决某一类问题,我们需要去记忆,去感悟。


4、形成一个属于自己的知识体系


如何去“记住”(记好笔记,多多复习);在学习过程中,遇到挫折,产生挫败感该如何处理(这个是必然会发生的,总有难以理解不会的地方);如何进行心态方面的调整(欲速则不达,不过也有”敏捷学习“的概念)。

‘柒’ 电脑培训分享数据结构与算法知识

对于大多数的程序员来说,在学习数据分析等技术的时候需要先了解关于数据结构以及算法等知识点,下面我们就给大家简单介绍一下什么是数据结构?什么是算法?



大部分数据结构和算法教材,在开篇都会给这两个概念下一个明确的定义。但是,这些定义都很抽象,对理解这两个概念并没有实质性的帮助,反倒会让你陷入死抠定义的误区。毕竟,我们现在学习,并不是为了考试,所以,概念背得再牢,不会用也就没什么用。

虽然我们说没必要深挖严格的定义,但是这并不等于不需要理解概念。下面我就从广义和狭义两个层面,来帮你理解数据结构与算法这两个概念。

从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。

图书馆储藏书籍你肯定见过吧?为了方便查找,图书管理员一般会将书籍分门别类进行“存储”。按照一定规律编号,就是书籍这种“数据”的存储结构。

那我们如何来查找一本书呢?有很多种办法,你当然可以一本一本地找,也可以先根据书籍类别的编号,是人文,还是科学、计算机,来定位书架,然后再依次查找。笼统地说,这些查找方法都是算法。

从狭义上讲,也就是我们专栏要讲的,是指某些着名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。这些都是前人智慧的结晶,我们可以直接拿来用。我们要讲的这些数据结构和算法,都是前人从很多实际操作场景中抽象出来的,经过非常多的求证和检验,可以高效地帮助我们解决很多实际的开发问题。

那数据结构和算法有什么关系呢?为什么大部分书都把这两个东西放到一块儿来讲呢?

这是因为,数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。

比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果IT培训http://www.kmbdqn.com/选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。

数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。


‘捌’ 我们为什么要学数据结构与算法,设计模式

数据结构是非常重要的 ,举个例子,如果要在一堆数中查找一个数,挨个遍历查询,是非常有失效率的,使用平衡树或者哈希表,则能高效查询,尤其是数据量极大时,譬如几十万到多少亿的数据量,将会有极其明显的效率差距。可能高效的程序只需要1ms,暴力查找要几小时
类似的例子还有很多,算法也是如此
而设计模式,只有做大型工程才有用,能够更合理的组织代码,便于开发和维护,小程序是体现不出来什么作用的

阅读全文

与数据结构与算法感悟相关的资料

热点内容
怎么用qq浏览器整体解压文件 浏览:584
肺组织压缩15 浏览:269
安卓手机为什么换电话卡没反应 浏览:793
诸子集成pdf 浏览:338
php注册框代码 浏览:716
手机加密好还是不加好好 浏览:814
别克凯越压缩机泵头多钱 浏览:241
组管理命令 浏览:980
海南高德司机端是什么app 浏览:861
pid命令 浏览:888
一天一图学会python可视化 浏览:309
魔兽编辑文本命令串 浏览:497
android中view绘制 浏览:798
安卓机内存删除怎么恢复 浏览:331
Qt环境的编译软件放到linux 浏览:214
联创打印系统怎么连接服务器 浏览:937
杭州行政命令 浏览:160
如何查找服务器日志 浏览:801
加密的钥匙扣怎么写 浏览:579
文件夹更新不了怎么办 浏览:475