什么是数据结构
简单点就是 程序设计 = 数据结构 + 算法
逻辑结构 & 物理结构
传统上把数据结构
分为逻辑结构
&物理结构
逻辑结构:是指
数据对象
中数据元素
之间的相互关系
,是需要着重关注和讨论的问题。
四大逻辑结构:
- 集合结构:数据元素之间
相互没有关系
。 - 线性结构:数据元素之间是
一对一的
关系。 - 树性结构:数据元素之间有
一对多
的层级关系
。 - 图形结构:数据元素是多对多的关系。
物理结构:指
数据的 逻辑结构
在计算机中的存储形式
。
根据物理结构的定义,我们实际上研究的就是如何把数据元素
存储到
计算器的存储器中
。
数据元素的存储形式
有两种:
- 顺序存储:
- 把数据元素
存放
在地址连续
的存储单元
里,其数据之间
的逻辑关系
和物理关系
是一致的
。就如:一些编程语言的数组
就是这样。
- 把数据元素
- 链式存储:
- 把数据元素存放在
任意的 存储单元里
,这组储存单元可以是连续的
,也可以是不连续
。就如单链表,只要知道下一个数据元素 指向的地址
就行`。
- 把数据元素存放在
什么是算法
引入
计算 1+2+3+4+ … +99+100 的值
常规算法(使用循环一个一个加):
int i, sum = 0, n = 100; for(i = 1; i<100; i++){ sum = sum + i; } printf("sum = %d", sum);
使用高斯算法:
int i, sum = 0, n = 100; sum = (1 + n)*n/2; printf("sum = %d",sum);
这样是不是效率高很多。
算法的特征
算法有五大特征
解决问题并不只有一种算法
- 输入
- 算法具有
零个
或者多个
输入。 - 尽管大多数时候算法来说,输入参数是必要的,但是就像打印
bigdataboy.cn
,就不需要参数。
- 算法具有
void print(){ printf("bigdataboy.cn"); }
- 输出:
- 算法需要
至少一个
或者多个
输出。
- 算法需要
- 有穷性
- 是指在执行
有限的 步骤
后,自动结束
,并且每一步都是在可接受的 时间范围内
完成。
- 是指在执行
- 确定性:
- 算法的每一步都
具有确定的含义
,不会出现二义性
。 相同的输入
只能有唯一
的输出结果。
- 算法的每一步都
- 可行性:
- 算法的
每一步
都必须是可行的
,就是说,每一步都能通过执行有限的 次数
完成。
- 算法的
算法设计的要求
- 正确性:
- 是指算法至少应该具有
输入、输出和加工处理
无歧义,能得到正确的结果。 - 大致分为以下四个层次
- 算法程序
没有语法错误
- 算法程序对于
合法的输入
能得到满足要求的输出
- 算法程序对于
非法输入
能产生相应的说明
- 算法程序对于
故意刁难的 测试输入
都有满足要求的输出结果
- 算法程序
- 是指算法至少应该具有
- 可读性
- 算法需要便于
阅读、理解和交流
,方便日后他人和自己的阅读和修改。
- 算法需要便于
- 健壮性
- 当输入
不合法
时,算法也能做出相关的处理
,而不是
产生异常
、崩溃
或莫名其妙的结果
- 当输入
- 时间效率高和存储量低
- 在生活中大家都想找一个漂亮乖巧懂事,懂分寸的女朋友。
- 好的算法就像好的女朋友,应该同时具备
时间效率高
和存储量低
的特点,设计算法时,因尽量考虑这两方面的问题!!!
版权声明:《 【数据结构与算法】概述 》为明妃原创文章,转载请注明出处!
最后编辑:2021-1-27 10:01:46