数据结构与算法

1.数据结构的内容

1先介绍数据结构中的相关术语

1.1数据
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。换句话说,数据就是对客观事物采用计算机能够识别、存储和处理的形式所进行的描述。
总之,数据的概念不再是狭义的,数据已由纯粹的数值概念发展成了图像、字符、声音等各种符号。例如,拿C语言的编译程序来说,他加工的数据就是字符流的源程序.c文件,输出的结果是目标程序.obj;对于链接程序来说,它加工的数据是目标程序.obj,输出的结果是可执行文件.exe.

c源程序-------(编译)--------->目标程序------------(链接)---------->可执行程序
1.2.数据元素
数据元素是组成数据的基本单位,是数据集合的个体。
例如:学籍表是数据,每一个学生记录就是一个数据元素。
1.3.数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集。
例如:整数的数据对象是集合N={…-1,0,1,2…}
综上,数据的概念归纳如下:
a.数据特点:
可被计算机处理(与计算机的关联性)
可被加工(能被处理)
b.数据构成:
数据元素:组成数据的基本单位
数据对象:性质相同的数据元素的集合

2.数据结构概念

数据结构是指相互之间存在一种或多种特定关系的数据元素集合。数据结构应该包括数据元素集合及元素间关系的集合,即数据的组织形式。
数据元素间的相互关系具体应包括三个方面:数据的逻辑结构、数据的存储结构和数据的运算集合。

2.1数据的逻辑结构

数据元素之间的逻辑关系的描述。
根据数据元素之间关系的不同特性,通常有以下四个基本结构:
a.集合结构:数据元素之间除了属于同一个集合的关系外,无其他关系;
b.线性结构:元素之间存在着一对一的线性关系;
c.树状结构:元素之间存在着一对多的层次关系;
d.图状或网状结构:元素之间存在着多对多的任意关系。
综上:
四类逻辑结果可概括如下:
线性关系:线性表、栈、队列、字符串、数组、广义表
非线性结构:树、图

往期数据结构的整理
顺序表理解及代码
单链表理解及代码
循环双向链表理解及代码
顺序表和链表的区别与总结
链栈理解及代码
队列理解及代码
循环队列理解及代码
字符串相关函数的实现代码
二叉树详解
经典排序算法

2.2数据的存储结构

存储结构(又称物理结构)是逻辑结构在计算机中的存储映像。
逻辑结构与存储结构的关系:存储结构是逻辑关系的映像与元素本身的映像。逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。
2.3数据的运算集合
对数据结构的一系列运算操作。
例如:学籍表中,可以采用线性表的逻辑结构,毕业、入学、早退等就是对数据的修改。故增、删、查、改就是对数据的运算集合。

总结学习数据结构就是来怎样合理地组指数据、建立合适的结构、提高执行程序所用的时空效率。

2.算法的内容

数据结构+算法=程序
这个公式说明数据结构和算法是程序的两大要素,两者相辅相成,缺一不可。
算法 就是在某一类数据结构结构上,实现各类运算而设计的的解决方法。

2.1算法定义:

算法是规则的有限集合,是为解决特定问题而规定的一系列操作

2.2算法的特性:

a.有限性:有限步骤之内正常结束,不能形成无穷循环。
b.确定性:算法的每一个步骤必须有确定的含义,无二义性。
c.可行性:原则上能精确进行,操作可通过已实现的基本运算执行有限次而完成。
d.输入:有多个或零个输入。
e.输出:至少有一个或多个输出。
说明:最近基本的是有限性、确定性和可行性这三个特征。

2.3算法设计的要求

算法设计的目标是正确、可读、健壮、高效、低耗
a.正确性:算法应该满足具体问题的求解需求。
"正确"的三个层次:
(1)对于几组输入数据能够得出满足要求的结果;
(2)对于精心挑选的典型、苛刻而带有刁难性的输入数据可以得出满足要求的结果;
(3)对于一切输入数据都能满足。
b.可读性:可读性好的算法有助于人对算法的理解,反之难懂的算法易于隐藏错误且难于调试和修改
c.健壮性(鲁棒性):对非法数据的输入有抵抗能力,算法应能加以识别并作出处理,而不是产生误动作和陷入瘫痪。
d.高效率和低存储量:算法的效率通常是指算法的执行时间,执行时间短的算法效率就高;存储量需求是指算法在执行过程中所需要的最大存储空间。

2.4算法的性能评价

对于问题规模与该算法在运行时所占用空间与所耗费时间给出一个数量关系的评价。
评价体现在时间上:即算法经编程实现后在计算机中运行所耗费的时间。
评价体现在空间上:即算法经编程实现后在计算机中运行所占用的存储量。
故引入时间复杂度与空间复杂度作为评价标准。
时间复杂度和空间复杂度详解》

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值