(一)数据结构与算法--前篇
来源:互联网 发布:od矩阵模型 编辑:程序博客网 时间:2024/05/16 15:40
数据结构
1.概念
数据:在计算机里面,数据基本上可以理解为信息,无论是人和事物,或者是对人和事物的描述(比如数量,颜色,大小等),都可以当作数据;
而计算机主要是完成对数据存储和运算的功能,那么也就可以理解为,凡是计算机所要存储和运算的东西,都能称之为数据。
结构:百度百科中对结构的解释是,组成整体和各部分的搭配和安排。
一般情况下,如果用到结构这个概念,那么绝对不会是单个存在的事物,而是多个事物共同存在,那么这些事物如果之间有一定的关系,那么所有事物之间的整体上的这种关系就可以理解为结构。
大体上的关系分为一对一、一对多和多对多的关系。
数据结构:简而言之就是计算机所要存储的多个数据之间的关系。常见的数据结构有队列、栈、树等等
2.举例
(1) 队列:这种结构就是现实生活中的排队,比如排队买火车票,每一个人就是一个数据,人和人之间是排队的关系,它的特点是,先来先买,先买先走,后来后买,后买后走
(2) 栈:这种结构最形象的就是手枪的弹匣里的子弹,子弹与子弹之间的关系就是栈结构,这种结构的特点是先压进去的子弹最后射出,后压进去的子弹,最早射出,这个也是和队列结构的区别
(3) 树形结构:日常生活中,一家公司的人员与人员之间的上下级关系,就是树形结构。董事长下面有副董事长、副董事长下面有各部门经理、各部门经理下面有各个组长、组长下面有一些员工。树形结构由很多种,左斜树、右斜树、二叉树、平衡二叉树等等。
除此之外还有其它结构,比如链表结构、图状结构等等,
另外,如果数据和数据之间没有关系,那么也能称之为结构,比如说高中数学中学到的集合的概念,在集合中的数据和数据之间,可以说是除了在同一集合里存储之外,没有任何的关系,但也是一种数据结构
但总的来说,可大致分为线性结构和非线性结构
算法
1.概念
算法理解起来非常简单,就是解决问题的方式方法,在计算机里面,并且在数据结构里面,算法就可以理解为操作数据的方法。
计算机不仅要存储数据,还要操作数据,比如添加、删除、修改。
2.举例
之前玩过一个小游戏,从1~100之间随机抽取一个数字,然后来猜测这个数字是几,每猜测一次会提示是偏大还是偏小,5次机会。
常用的方法就是先猜50,然后看提示是大还是小,无论大小,第二次猜就取剩下的一半,一直猜到第五次,如果还没猜出,那么就会说出心里觉得可能性最大的数字。
这种折半猜的方法,就是一种算法。
不同的数据存储方式,会有不同的算法
比如在一堆书中找一本书,如果这堆书是非常散乱的扔在一起,那么找书就要一本一本的拿起来看,直到找到位置,虽然效率慢,但也是一种算法;
也可以首先把书分类,比如学习的一类、小说的一类、漫画的一类,然后找书时就去符合所要找的书的分类中查找,那么效率就会提高很多,这也是一种算法。
3.评判标准
(1) 时间复杂度
时间复杂度并不是该程序所要执行的时间,而是所要执行的次数。
因为,不同的计算机,不同的操作系统,会造成同一种算法执行时间不同,比如拿一个算法运行在windows95系统,286处理器上,那么执行的时间就会比较长,但不能说这个算法就不好。
而执行的次数也不是单位时间内大概需要执行几次,而是该算法的最核心功能部分大概需要执行几次,也可以理解为大概需要执行几次,才能达到目的。很难非常精准的测出次数,所以用大概次数
用刚才找书的例子,比如有100本书,如果一个一个找,那么就完全有可能找到第100本才是所要找的数,那么该算法就要执行100次,
如果先把100本书分类,比如学习类的有60本,小说类的有30本,漫画类的有10本(我是不是特别爱学习 @_@!),那么如果所要找的书是学习类的,该算法要执行60次,如果是小说类的就要找30次,如果是漫画类的,就要找10次。
用这个执行次数的标准来衡量,就会比较准确。
拿一个算法A来用在一个配置比较高的机器上执行了100次才达到结果,用了10秒钟,和另一个的算法B在一个配置非常低的机器上执行了1次就达到结果,用了30秒钟,那么明显的B算法比较好。
(2) 空间复杂度
该算法在执行时大概占用的最大内存
(3) 难易程度
如果有一个非常非常牛逼的算法,全世界就他一个人会,其他人怎么学也学不会看不懂,那么这个算法也就一般
(4) 健壮性
一个算法执行次数少、占用内存小、并且简单易懂,但如果一个人给了个非法的数据,造成程序崩溃,那么这个算法就不是那么好
大概的评判标准是这么四种,但主要的是前两种。
- (一)数据结构与算法--前篇
- 数据结构与算法(Python)-前篇
- 算法与数据结构前绪
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 算法与数据结构(一)
- 数据结构与算法一
- 数据结构与算法一
- 数据结构与算法(一)概念梳理篇
- 【数据结构与算法】树结构篇一
- 数据结构与算法总论(一)
- 数据结构与算法分析(一)
- 算法与数据结构(一)--快速排序
- 数据结构与算法(一)概论
- 【数据结构与算法分析(一)】排序
- 计算机网络自顶向下方法第二章笔记
- Hiho_1015:KMP算法
- epel
- 5.2
- 一张细化了的hbase存储结构图
- (一)数据结构与算法--前篇
- STL之list容器详解
- 价值200元的小程序卡卷开发免费送
- 图像相关(三) Bitmap与byte[]、BitmapImage与byte[]互相转换、图像加载与保存
- centos7基于lnmp配置wordpress
- hdu 2642 Stars(二维树状数组)
- HDU 5834 Magic boy Bi Luo with his excited tree——树形dp
- Ebean ORM功能介绍
- Maven项目Run As无Run On Server的解决方法