数据的结构包括:线性结构和非线性结构。
线性结构:
- 特点:元素之间是一对一的线性关系,存储方式有顺序存储和链式存储,也就是顺序表或者是链式表。线性结构常见的有:数组 队列 链表 栈 。
非线性结构 - 非线性包括:二维数组、多维数组、广义表、树结构、图结构。
存储方式:链表和数组,
- 数组:可以按照下标进行读取 ,读取效率高,使用一段连续的内存地址。
- 链表:不使用连续的内存地址,不能按照下标读取,但是插入效率高,找到位置,直接插入,不需要进行数据的移动。
这部分,会整理之前刷过的题和笔记,进来补充到完整吧,代码我传git,尽量写清晰 ,怒需要看代码就知道怎样写代码,重要代码也会贴出来。
数据结构
研究非数值计算的程序设计问题的操作对象(一定关系组织的集合),
研究组织数据方式的学科,通过它可以编出更加有效率,并且漂亮的的代码。
数据结构的分类
逻辑结构/物理结构(存储)
逻辑结构:
- 集合结构
- 线性结构
- 树形结构
- 图形结构
物理结构:
- 链式结构
- 顺序结构
算法
一定的条件,对数据进行计算,得到需要的结果。
算法初体验
最好的算法:占用的内存小,计算速度快。
算法分析
时间分析:时间复杂度
空间分析;空间复杂度
分析方法:
- 事后分析法:代码写好之后,通过打印时间差来计算时间。
- 事前分析法:算法的策略和方案,编译产生的代码质量。
事前分析受那些因素影响:
- 采用的策略和方案
- 编译产生的代码质量(不可控制)
- 输入规模
- 机器执行的指令速度(不可控制)
所以开始之前需要知道问题的规模和实施方案。
for(int i=0;i<10;i++){
//for 循环执行的次数是11次,for循环里面的是10次,一般忽略了for循环的次数,只需要考虑里面代码的次数就可以了。
}
- 为什么不需要for语句的次数?
为了计算更有条理,更加方便,所以需要忽略掉他们。并且我们真正关心的只有for里面的语句,一般只关心核心代码。
总结:
算法分析最重要的是把核心操作次数和输入规模关联起来。
网友评论