标签:http color java 使用 io 数据 ar 问题
数据存储 的目的是便于数据访问,这个关系就是数据结构
算法 是计算机解题的模型:输入,输出,顺序执行,跳转,循环,分支,有限步骤
人大脑组织数据的方式有线,树,图三种逻辑结构,而计算机存储采用顺序,链式和两者混合的方式。前者是概念性的东西,后者是物理实现。
线形结构:算法是迭代算法,你只要注意规模最小的情况下不出错,则算法一般不出错。
树形结构:算法是递归算法,你只要运用递归组合的方法,将简单情形组合出复杂情形,简单情形不出错,则算法一般不会出错。
简单情形不出错,则算法一般不会出错。
图形结构:DFS:将图按照树形结构来处理,运用递归算法
BFS:将图按章线形结构来处理,运用迭代算法
必须会下面几个几个算法:
(线形两个)
1.将两个有序表合并为一个表,这个算法的变种很多,可以是链表,顺序表。涉及集合运算,
归并排序,字符串处理。
2.将一个顺序表的元素重新划分,左边的较小,右边较大。涉及快速排序,求字符串的逆串。
(树形若干个)注意:有些可以实现,有些实现不了,可以拿来思考。
3.前序线索化,递归实现,栈模拟递归,非栈式迭代实现。
4.中序线索化,递归实现,栈模拟递归,非栈式迭代实现。
5.后序线索化,递归实现,栈模拟递归,非栈式迭代实现。
(图形)注意:会画表格,写出算法的逐个步骤即可。
6.MST:prim,kruskal
7.short path:Dijkstra ,Floyd
8.AOV:拓扑排序的DFS,BFS实现
9.AOE:关键路径
严蔚敏数据结构应该怎么学习。
Google 上关于数据结构与算法的回答:
我多次在google面试或者毕业招聘的时候看到这样的情形:学习数据结构和算法--CS课程里面几乎最重要的课程--的方式很不科学!!
到不是说大家用的书或者老师用的材料不对,而是说学生们对于这些课程本身的理解非常缺乏.
打好数据结构和算法基础的关键并不在于对于所有数据结构的细致的了解,不是记住每一个大O值或者摊余成本..((@_@;)? [不懂]).
如果这些知识你都掌握了,当然很棒并且可以给人留下很深的印象,但是你基本上用不着啊!
你的职业生涯中或许永远都不会要求你实现一个红黑树删除节点的算法.但是!你必须有能力而且手起刀落轻轻松松的识别出什么时候使用二叉树更简单更有效, 因为你十分需要这样的技巧.
所以,不要试图记住所有的东西.而是从基础开始,做两件事:
我在google面试的时候,我经常会问一个可以由二叉树搜索解决的问题. 好的应聘者可以几分钟内就可以想到用二叉树来解决,而且对于我的其他问题也差不多10-15分钟就可以解决.当然,偶尔会有一个应聘者,他能直观的认识树这种结构,而且可以把我的问题形象化,图形化的描述出来.当然他或许对于某些操作的时间复杂度不甚了解,但是对于问题他却可以立马回应,因为他们脑袋里就有这样的树结构啊~所以他也能拿到工作啊.
至于书嘛,只推荐一本--- <算法导论>
如果你想要一本有很多例子并且和语言相关的书的哈u,我就推荐 <Algorithms in C++ ><Algorithms in Java> 当然我还是更推荐<算法导论>,不过这些也是很好的教辅书啦~
给一个小小的建议:学数据结构的时候,不要陷入C语言的思维(当然,也不要陷入其他语言的思维)
通过上面几步学习,基本上就掌握的比较好了,即便过了一段时间,也不会忘的一干二净;
对于某个数据结构,几步:
1、理解该数据结构的基本概念(定义、实现)
2、尝试理解这个数据结构的意义(为什么它会被发明)
3、用这种数据结构解决一些对应的例题(书本上的习题、Online Judge上的水题)
4、尝试用这个数据结构解决一些以往你用别的数据结构解决的问题,能否解决,为什么。
5、再次尝试理解这个数据结构的意义
6、尝试改变这个数据结构以应对各种现实的问题(Online Judge的好题)
8、学好数学,别数都不会数。
注:以上回答取材出自知乎 :http://www.zhihu.com/question/19830721
标签:http color java 使用 io 数据 ar 问题
原文地址:http://www.cnblogs.com/zhaoqingqing/p/3902544.html