1.绪论

1.基本概念和术语

名词

         - 数据:是客观事物的符号表现,是所有能输入到计算机并被计算机处理的符号总称。
         - 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
         - 数据项:是组成数据元素的,有独立含义的,不可分割的最小单位。例如:学生表中的ID,姓名,性别就是数据项。
         - 数据对象:是性质相同的数据元素集合,是数据的一个子集

逻辑结构

  • 数据的逻辑结构有两个要素:1.数据元素;2.关系(四大关系图:1.集合结构,2.线性结构,3.树结构,4.图结构)
  • 集合结构:数据元素之间除了“属于同一集合”的关系之外,别无其他关系。例:学生与班级的关系
  • 线性结构:数据元素之间存在一对一的关系。
  • 树结构:数据元素之间存在一对多的关系。例:班主任与学生的关系。
  • 图结构或网状结构:元素之间存在多对多的关系。 例:多位同学之间的朋友关系。

逻辑结构层次图

数据的逻辑结构
线性结构
非线性结构
线性表
树结构
图结构
集合结构
一般线性表
线性表
特殊线性表
线性表的推广
栈与队列
字符串
数组
广义表
二叉树
有向图
无向图

存储结构

计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。

  • 顺序存取结构:是借助元素在存储器的相对位置来表示数据元素之间的逻辑关系。
  • 链式存取结构:无需要求所有元素存放在一片连续的存储空间之间,每个节点之间附加指针字段,用于存放后继元素的存储地址。

数据类型

  • 数据类型是一个值的集合和定义在这个值上的一组操作的总称。例如,整型变量,数组,结构体等。
  • 抽象数据类型:抽象就是抽取实际问题的本质。抽象数据类型一般指由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包含三部分:1.数据对象 2.数据关系3.基本操作。

2.算法和算法分析

算法的定义和特性

  • 算法:是为了解决某类问题而规定的一个有限长的操作序列。
  • 算法必须满足的5大特性:
    1.有穷性:必须在执行有穷步结束,而且每一步都必须在有穷时间内完成。
    2.确定性:对于每种情况下所应执行的操作,在算法中都有确切的规定。不会产生二义性,使算法的执行者或阅读者都能明确其含义已经如何执行。
    3.可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
    4.输出:一个算法有零个或者多个输出。
    5.输入:一个算法有一个或者多个输出。

评价算法优劣的基本标准

  • 正确性:在合理的数据输入下,能够在有限的运行时间内得到正确的结果。
  • 可读性:一个好的算法,首先应便于人们理解和相互交流,其次才是机器的可执行性。
  • 健壮性:当输入的数据非法时,好的算法能适当的做出正确的反应或进行相应的处理,而不会产生一些莫名其妙的输出结果。
  • 高效性:高效性包括时间和空间两部分,时间高效是指算法的设计合理,执行效率高,可以用时间复杂度来衡量;空间高效是指算法占用存储容量合理,可以用空间复杂度来度量。时间复杂度和空间复杂度是衡量算法的两个主要指标。

算法效率衡量

主要方法有两类:事后统计法和事前分析估算法。事后首先必须要实现程序,而且还有时空开销和计算机软硬件等环境的匀速,缺点太多,所以一般用事前分析估算法。

  • 问题规模:是算法求解问题输入量的多少,是问题大小的本质表示,一般用整数n表示。
  • 语句频度:一条语句重复执行的次数叫语句频度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值