第一章 绪论

1.1 数据结构简介

1.1.1数据结构的基本概念和术语

(1)数据:是信息的载体,是对客观事物的符号化表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称,它能够被计算机识别、存储和加工处理。
(2)数据元素:是数据的基本单位。数据元素习惯上又常被称为元素、结点、顶点、记录等。
(3)数据项或域:是数据的最小单位。一个数据元素通常可由若干个数据项组成,例如,组成学籍管理系统中学生基本信息的学号、姓名、性别、籍贯、出生年月等均为数据项。
(4)数据对象或数据元素类:是同质的数据元素的集合,是数据的一个子集。数据元素是数据对象或数据元素类的一个实例。例如,城市交通网是一个数据对象或一个数据元素类,顶点A和顶点B分别代表一个城市,是该数据对象的两个实例。
(5)数据结构:通常包括数据元素之间的逻辑关系(逻辑结构)、数据元素在计算机内的存储表示(存储结构)和定义在这种结构之上的一组操作(运算)三个方面。数据元素之间的关系称为结构,通常将数据之间的逻辑关系结构称为数据结构。通常有:
线性结构(1:1):数据元素之间存在一对一的关系。
树形结构(1:N):数据元素之间存在一对多的关系。
图形结构(M:N):数据元素之间存在多对多的关系。
集合结构:数据元素属于一个集合。
分类
1)根据元素间存在的不同关系:线性结构(数据元素依次排列在一个线性序列中)和非线性结构(每个数据元素可能与零个或多个)。
2)根据视点的不同,分为数据的逻辑结构和数据的物理结构(又称存储结构)。数据的存储结构可以分为顺序存储结构、链式存储方法、索引存储方法、散列存储方法。

1.2 抽象数据类型

数据类型在高级语言中它被用于描述程序中操作对象的特性,每个变量、常量或表达式都有一个确定的数据类型。数据类型显示或隐含地规定了在程序执行期间变量或表达式所有可能的取值范围,以及在这些值集上的一组操作的总称。在高级语言程序中,数据类型按“值”的不同特性可分为两类:一是非结构的原子类型,如C语言的基本类型(整型、实型、字符型和枚举型)、指针类型和空类型;二是结构类型,可分解。
抽象数据类型独立于应用程序,指一个数学模型以及定义在该模型上的一组操作。
数据结构一般包含:逻辑结构存储结构数据运算

1.3 算法的执行效率及其度量

1.3.1 算法

算法是对特定问题求解步骤的一种描述,是指令的有限序列。算法具有以下特性:
(1)有穷性:一个算法必须在有穷步内结束。
(2)确定性:算法的每一步必须有确切的定义,无二义性。即对相同的输入只能有相同的输出。
(3)可行性:算法的每一步都可以通过有限次执行已经实现的基本运算得以实现。
(4)输入:零个或多个输入,这些输入取自特定的数据对象集合。
(5)输出:一个或多个输出,输出同输入之间存在某种特定关系。
算法与程序区别与联系一个程序不一定满足有穷性。例如,操作系统没有任务要处理时会处于动态等待,因此不是一个算法。另外,程序中的指令必须是机器可以执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定实现。一个算法若用程序设计语言来描述,则它就是一个程序。

1.3.2 算法设计的要求

一般程序设计人员会考虑两个核心目标:
(1)设计一个容易理解、编码和调试的算法。
(2)设计一个能有效利用计算机资源的算法。
好算法通常考虑的基本因素:
(1)正确性:不含语法错误;对于输入的几组数据有满足规格说明要求的结果输出;对精心挑选的数据能够得到满足要求的结果;对于一切合法的输入数据都能有满足规格要求的结果输出。
(2)可读性:思路清晰、层次分明、简单明了、易读易懂。
(3)健壮性:当输入不合法数据时,应能作适当处理,不会引起严重后果。
(4)有效性:效率和低存储量。

1.3.3 算法效率的度量

常见的时间复杂度排序:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)
法则1:for循环
法则2:嵌套for循环从里向外分析
法则3:顺序语句将运行时间求和,最大值就是
法则4:If/Else语句不超判断中运行时间长的

1.3.4 算法的存储空间需求

空间复杂度是指程序从开始到结束所需的存储量。
程序所需的存储空间包括:
固定部分:与所处理的数据的大小和个数无关。主要包括程序代码、常量、简单变量、定长成分的结构变量所占的空间。
可变部分:与某次所处理的数据的大小和规模有关。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值