1.数据
数据:计算机操作的对象
数据元素:组成数据的基本基本单位
数据项:一个数据元素可以由若干个数据项组成
数据对象:性质相同的数据元素的集合
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合
数据类型
1.原子类型:不可以在分解的基本类型,包括整型,字符型
2.结构类型:由若干个类型组合而成
抽象数据类型:指一个数学模型及定义在该模型上的一组操作
2.逻辑结构
1.集合结构:集合结构中的数据元素除了同属于一个集合以外,没有其他关系
2.线性结构:信息架构中的数据结构之间是一对一的关系
3.树形结构:树形结构中的数据元素存在一对多的数据关系
4.图形结构:图形结构中的数据元素存在多对多的关系
3.物理结构
1.顺序存储结构:把数据元素存放在地址连续的存储单元内,逻辑关系和物理关系一致
2.链式存储结构:把数据结构存放在任意的存储单元里,可以是连续也可以是不连续
4.算法
定义:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
特性
1.输入输出:算法具有零个或多个输入,至少有一个或多个输出
2.有穷性:算法在执行有限的步骤后自动结束,不会无限循环,并且每个步骤在可接受的时间内完成
3.确定性:算法的每一步都具有确定的意义
4.可行性:每一步都必须可行
算法设计的要求
1.正确性:
程序不含语法错误。
程序对于几组输入数据得出满足规格说明要求的结果。
程序对于精心选择的典型、苛刻而带有发难性的几组输入数据能够得出满足规格说明要求的结果。
程序对于一切合法的输入数据都能产生满足规格说明要求的结果。
2.可读性:便于理解,阅读和交流
3.健壮性:当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生黄晓明其妙的输出结果
4.时间效率高和存储量低
时间复杂度和空间复杂度
时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。
空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。
大O阶
常用O()来表示时间复杂度
推导大O阶方法
1.用常数1来取代运行时间中所有加法常数。
2.修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,则去除与这个项相乘的常数。
三者运用后得到的结果就是大O阶
常见的时间复杂度
执行次数函数 | 阶 |
---|---|
12 | O(1) |
2n+3 | O(n) |
3n²+2n+1 | O(n²) |
5log2n+20 | O(logn) |
2n+nlog2n+19 | O(nlogn) |
6n³+2n²+3n+2 | O(n³) |
2ⁿ | O(2ⁿ) |
最坏情况和平均情况
最坏情况:是一种保证,是最坏的情况,通常我们提到的运行时间都是最坏情况的运行时间
平均时间:我们期待的运行时间
时间复杂度所耗时间的大小排序
O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!)