提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、数据结构是什么?
程序=数据结构+算法
1.概念
用来描述数据之间相互之间存在一种或多种特定关系的数据元素的集合
2.分类
(1)逻辑结构
1.集合:所有数据在同一个集合中,关系平等。(火车车厢中所有的人)
2.线性,一对一数据和数据之间是一对一的关系。(排队买票)
3.树:一对多(目录对文件)
4.图:多对多(导航,网络通讯)
补充:哈希存储是一种集合的存储方式,采用索引的方式查找数据。
(2)物理结构
1.顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致
2.链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。
二、算法
1.概念
是解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。
2.设计
1,输入,输出特性,输入时可选的,输出时必须的。
2,有穷性,执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。
3,确定性,同一个输入,会得到唯一的输出。
4,可行性,每一个步骤都是可以实现的。
3.遵循的原则
1,正确性,
语法正确
合法的输入能得到合理的结果。
对非法的输入,给出满足要求的规格说明
对精心选择,甚至刁难的测试都能正常运行,结果正确
2,可读性,便于交流,阅读,理解
3,健壮性,输入非法数据,能进行相应的处理,而不是产生异常
4,高效,存储低,效率高
三、时间复杂度
概念:cpu执行程序所花时间的度量。
计算方法:
1,用常数1 取代运行时间中的所有加法常数
2,在修改后的运行函数中,只保留最高阶项。
3,如果最高阶存在且不是1,则取除这个项相乘的常数。
时间复杂度排序:
O(1)<O(logn)<O(N)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
O(logn):
for(i=0;i<n;i++)
{
i=5*i;
}
四、空间复杂度
概念:算法在运行时间锁消耗的内存