首页 > 其他 > 详细

数据结构 ------ 绪论

时间:2017-01-10 14:26:55      阅读:152      评论:0      收藏:0      [点我收藏+]

前言     

     讲真以我现在的水平并感觉不出来数据结构对前端的重要性,可是我看到很多前端笔试和大牛推荐中都包括了数据结构和算法,而且我又觉得它会不会与react的虚拟dom有联系?毕竟是计算机的基础,还是应该要会的。

 

1.什么是数据结构?

     你做数学题的时候只需要某些公式,可是生活中的问题千千万,很多情景都不能一个公式所能解决的,需要有更切合情景的数据模型。

     eg:

     线性结构(一一对应):当你去图书馆找一本书的时候,你可以根据id,书名等查找,这些信息都是一一对应的,最后会组成一个表,每一行都是一本书的信息。

技术分享

     如果你用过mysql数据库的话,应该很好理解,因为每个表都是线性的,这个时候你是无法通过数值计算来处理的。

     

     树状结构(一对多): 你想象一下,这时候给你一个性格测试问卷让你处理,那你如何做?还能线性处理吗?

     在这里可以考虑树状结构,即1选了是会跳到3,否会跳到2;3选了是会跳到5,选了否会跳到8。。。 那在你这就会变成这种数据模型

技术分享 这种结构是不是更合理?

       

 

     图状结构(多对多):这个就不具体举栗子了,生活中有很多更加混乱的情况,比如多岔路口,每个情况都对应着多种选择,互相交叉,这种时候就需要用到图了。

 

     总之,白话一点,数据结构就是你处理计算机问题时的一种切合情景的数据模型。就像社会中,有的时候需要以个人为单位处理问题;有的时候需要是一组->比如军训站队,教官说,3号同学出列,你就知道是谁了;有的时候需要以家庭为单位,比如买房物业之类的->这个就可以对应到树状结构;有的时候情况更为复杂,比如一个大型的公司或者散居的人群->每个人之间都可能有相互的关系,这个时候就是图来处理比较好。

     所以,数据结构就是面对具体问题时选取的符合被处理数据情况的模型。理解了吗?

 

2.再说说算法复杂度

     有数据结构的同时当然也会有算法,即如何操作这些结构。算法包括时间复杂度和空间复杂度,空间复杂度取决于该问题需要的空间,而时间复杂度则需按照代码计算。

     技术分享时间复杂度分别为O(1),O(n)和O(n2)。

技术分享时间复杂度为O(n3)

     是不是发现了一定的规律?有限次即1,有循环即乘n,你可以理解为某种意义上的去尾,如果是n3+n3+n+1的话,所得时间复杂度就是n3,即最大的那一项。

     一个算法通常有最好情况和最坏情况,即最快是多少,最慢是多少。一般情况下讨论的复杂度均值最坏情况下的时间复杂度。

     后面到了二分法时还会遇到Log n呢,做好准备咯~。

 

数据结构 ------ 绪论

原文:http://www.cnblogs.com/wslv/p/6269066.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!