数据结构与算法的一些基本概念

数据结构与算法的关系

两者密不可分,相辅相成,可以说是黄金搭档,虽然分开来看好像也行,但是那样就失去了灵魂。如果说分开时是1+1=2的效果,那么合起来能起到1+1>>10的效果。

数据结构基本概念和术语

数据

可输入进计算机且能被计算机程序处理的符号及其集合。
如:文本,数字,音频,视频,图像等。

可分为数值型和非数值型:
数值型:整型,实型等。
非数值型:音频,视频,图像等。

数据对象

具有相同性质和数量的数据项的数据元素的集合,实际应用中通常简称为数据。

数据元素

组成数据且有一定意义的基本单位,通常看作整体。也叫做记录或结点。
如:人类中的人;动物中的鸡,狗,猪等。

数据项

组成数据元素的基本单位,也是数据不可分割的最小单位。
如:人的口,耳,鼻,姓名,身份证号等。
在这里插入图片描述

数据结构

相互之间存在一种或多种特定关系的数据元素的集合

可分为逻辑结构和物理结构(存储结构)。

逻辑结构:(可以用人类社会中的关系来看)

(1)集合结构:(500年前是一家的陌生人)

(2)线性结构:(九代单传)
(一对一)

(3)树形结构:(同一个祖宗的大家族)
(一对多)

(4)图形结构:(社会中的人际关系)
(多对多)

物理结构:

(1)顺序存储结构:存储单元(地址)连续,逻辑结构与物理结构一致。(可参考数组的空间分配)(数据不能随意改变)

(2)链式存储结构:仅用地址关联,一个联一个,地址之间不一定连续,数据可随意处理。(可参考门牌号,看号不看人)

抽象

抽取出事物所具有的普遍性的本质,忽略繁杂的细节,直指核心。(有点像通解)(或许也可以称之为“道”)

抽象类型

数学模型

算法

解决特定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作

特性(可参考降龙十八掌)

(1)输入:有零个或多个。(自练内力或醍醐灌顶)

(2)确定性:每个步骤都有确定含义,不二义。
(内力的运行路线仅一条,节点一对一)

(3)可行性:每一步都是可行的。(每个节点内力都能通过)

(4)有穷性:在可接受时间内执行完。(内力运行时间有限)

(5)输出:一个或多个。(放出一条或多条神龙)

算法设计要求(注意与特性区分)

(1)正确性:

算法至少应该具有输入、输出和加工处理无歧义性、能正确放映问题的需求、能够得到问题的正确答案

有四个层次:

1.算法程序没有语法错误。

2.对合法的输入数据能够产生满足要求的输出结果。

3.对非法的输入数据能够得出满足规格说明的结果。

4.对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果。

算法的正确性大部分情况下都不能用程序来证明,而是用数学方法证明的。通常把层次3作为一个算法是否正确的标准。

(2)可读性:

算法设计的另一目的是为了方便阅读、理解和交流。

可读性是算法(也包括实现它的代码)好坏很重要的标志

(3)健壮性:

当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

(4)时间效率高和存储量低:

算法的执行时间少,算法程序运行时所占用的存储空间少。与
时间复杂度和空间复杂度有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Driver.SHAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值