数据结构和算法学习总结01 绪论
数据结构实际上是数据元素之间的关系的集合
数据结构分为 1.逻辑结构
2.物理结构(逻辑结构的数据元素的存储方式)
逻辑结构分为 1.集合结构 数据元素无关系,只是属于一个集合
2.线性结构 数据元素间1对1的关系
3.树形结构 数据元素间1对多的关系
4.图形结构 数据元素间多对多的关系
物理结构分为 1.顺序存储结构 数据元素存储在连续的存储单元中 类似数组
2.链式存储结构 数据元素存储在可连续,可不连续的存储单元中
算法实际上就是解决问题的一种方式,办法
简单的例子: 高斯定理 1+2+3+4+...+99+100= ?
初学者的代码:
int i , n = 100 , sum = 0;
for(i = 1; i < n; i++)
{
sum = sum + i;
}
printf("%d",sum);
利用高斯定理的算法的代码:
int n = 100 , sum = 0;
sum = (1 + n)* n/2;
printf("%d",sum);
算法的特性:1.输入 至少有0个或多个输入
2.输出 至少有1个或多个输出
3.有穷性 不会无限循环
4.确定性 每一个步骤都是确定的含义,不能有歧义 算法在一定条件下,只有一条执行路径,相同的输入只会有唯一的输出结果
5.可行性 每一步都是可行的,都可执行完成
算法不是唯一的,同一个问题可以有多个算法,同一个算法不可能解决所有问题
算法设计的要求 : 正确性,可读性,健壮性,时间效率高,存储量低
正确性; 至少有输入,输出,无歧义性,正确反应问题的需求,得到问题的正确答案
四个层次: 无语法错误; 合法输入可得到符合需求的输出; 非法输入要产生对应的说明; 一些特殊刁难的输入也可以得到符合需求的输出
数据结构和算法之间是一种好基友的关系,在一起时才能迸发更高的激情,也更容易让我们理解。