一、什么是数据结构
1、概念
数据结构就是数据的组织、管理和存储格式,是为了高效的访问和修改数据。
2、分类
(1)线性结构
线性结构是最简单的数据结构,包括数组,链表,栈,队列等
(2)树
树是非线性结构复杂的数据结构,包括二叉树,堆等
(3)图
图是更为复杂的数据结构,由于节点和节点相互关联,所以会组成网状,呈现出多对多的关联关系
(4)其他类型数据结构
其他类型数据结构会由上述基本的数据结构转变而来,比如跳表,哈希链表,位图等。
二、什么是算法
1、概念
我们有了数据结构,可以用来保存数据,既然数据已经保存好了,那就涉及到怎么使用了,这就是算法需要做到的事情了
算法本质就是一系列程序指令,用于特定的运算和逻辑问题
2、应用场景
(1)运算
运算也属于算法的一种,毕竟是需要解决问题的,比如给你两个超大整数的和,如何计算求解呢,如果使用程序内置类型,有可能就会导致变量溢出,这个时候就需要一种合适的算法来解决这个问题了。
(2)查找
在数据结构中进行查找是一项最基本的操作,而你在生活中也时常会遇到这种问题,比如查询你的手机话费,查询视频网站上你喜欢的内容等
(3)排序
排序算法在生活是最常见的,比如你的成绩排名,微博的实时热点等等
(4)最优决策
寻找最优解是一个古老的问题了,我们从出生到死亡,一直是寻找最优解的过程,所以你的人生无时不刻不在经历着算法
三、时间复杂度
1、概念
什么是时间复杂度?
计算机是需要指令运行的,时间复杂度就是对程序基本指令操作执行次数的统计。
举个例子来说:
如果有人每一天给你一块钱,那么一年也就是块钱,对每天来说,你获得的都是一块钱。这就是常量级任务。
如果有个人每天给你的钱是昨天的钱多一块,那么你第一天得1块钱,第二天得2块钱,以此类推,这就是线性级任务。
如果有个人每天给你的钱是昨天的一倍,但他第一天给你5分,那这样第二天就给你1毛,第三天就是两毛,第四天就是四毛,这最后可是一笔巨款,这就是指数级任务。
而时间复杂度就是用来分析算法的时间的递增情况的。
四、空间复杂度
1、概念
算法总是用来处理数据结构的,而处理问题也可能会占用数据结构,这就需要占用内存了,而空间复杂度就是分析所占用内存的递增情况。
比如:你家有一平方米大小,但有两平方米的面要放,放不下怎么办呢?那只能先放一平米的面,吃完了再放另一平米了,毕竟空间也不是无限的,需要省着点用啊。
空间复杂度呢?就是分析你的程序的使用空间会随着你程序数据增长,内存的的增长模型,当然也会有常量级,线性级,指数级的递增了!
五、总结
这些超简单的概念理解了,那就要去分析一下数据结构和一些基本操作了!