数据结构第一章——概论

一、数据结构的基本概念

1.数据(Data):是对客观事物的符号表示,在计算机科学中是指能输入到计算机并被计算机程序处理的符号的总称。数据一般可分为数值数据、文本数据、图形图像数据和音响数据等。

2.数据元素(Data Element):是数据的基本单位,也可以称为结点,在计算机程序中通常作为一个整体进行考虑。 数据元素一般由若干数据项(Data Item)组成,数据项是构成数据元素最小的、不可分割的单位。
数据处理(Data Process):对数据进行检索、插入、删除、合并、拆分、排序、统计、计算、转换、输入、输出等的操作过程。

3.数据结构(Data Structure):
相互之间存在一定关系的数据的集合。
是数据及其元素之间相互关系的表示。

4.逻辑结构:数据元素之间一般存在某种特定的关系,这种关系称为数据的逻辑结构。

(1)线性结构(linear structure)
(2)树型结构(tree structure)
(3)图结构(graph structure)
(4)集合(set)

5.物理结构(存储结构):数据结构在计算机内存中的表示形式。包括数据元素的表示和其关系的表示。

二、数据的存储结构

1.计算机的主存储器的特性
(1)其存储空间提供了一种具有非负整数地址编码的,相邻单元的集合,其基本的存储单元是字节。
(2)计算机的指令具有按地址随机访问存储空间内任意单元的能力,访问不同地址所需的访问时间基本相同

2.数据存储结构
它又称物理结构,是数据及其逻辑结构在计算机中的表示

3.存储结构分类
(1) 顺序结构
(2)链式结构

三、顺序存储

用一块无空隙的存储区域存储数据称为顺序存储
在这里插入图片描述

(1)顺序存储把一组结点存储在按地址相邻的顺序存储单元里,结点间的逻辑后继关系用存储单元的自然顺序关系来表达
(2)顺序存储结构称为紧凑存储结构,其紧凑性是指它的存储空间除了存储有用数据外,没有用于存储其他附加的信息

四、链式存储

利用指针,在结点的存储结构中附加指针字段称为链接法。两个结点的逻辑后继关系可以用指针的指向来表达,任意的逻辑关系,也可以使用这种指针地址来表达。
数据结点分为两部分: 数据字段 、指针字段

五、抽象数据类型

1.数据类型
数据类型是一个值的集合和定义在这个值集上的一组操作的总称
数据类型显式或隐含地规定了:
(1)在程序执行期间变量或表达式所有可能的取值范围
(2)在这些值上允许执行的操作

2.由用户定义,用以表示应用问题的数据模型
ADT是指一种数据结构以及定义在该数据结构上的一组操作,由基本的数据类型组成, 并包括一组相关的服务(或称操作),信息隐蔽和数据封装,使用与实现相分离。
一个 ADT 的定义不涉及它的实现细节,在形式上可繁可简。通常包含以下内容:
(1)抽象数据类型名
(2)数据元素之间逻辑关系的定义
(3)每种基本操作的接口(操作的名称和该操作的前置条件、输入、功能、输出、后置条件的定义)

如长方体的ADT

rectangle
Data
长方形的长和宽:w, h
Operation
Constructor
前置条件:长方形不存在
输入:一个长方形的长和宽功能:根据输入长和宽构造长方形
输出:无
后置条件:长方形的长和宽具有输入值
S
前置条件:存在一个长方形
输入:无
功能:计算长方形的面积
输出:计算的结果
后置条件:长方形的长和宽保持不变
……
endADT

六、算法及其特性

1.算法:
是为了求解问题而给出的有限的指令序列,每条指令表示一个或多个操作。——解决问题的步骤

2.程序
是算法的一种实现,计算机按照程序逐步执行算法,实现对问题的求解。

3.算法的性质

(1)有穷性:一个算法必须能在执行有穷步之后结束,且每一步都可在有穷时间内完成;
(2)确定性:算法中每一条指令必须有确切的含义,不具有二义性。
(3)可行性:算法中描述的操作都可通过已经实现的基本运算执行有限次来实现。
(4)输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合;
(5)输出:一个算法有一个或多个输出,这些输出是同输入具有某种特定关系的量。

4.算法的描述

算法设计者在构思和设计了一个算法之后,必须清楚准确地将所设计的求解步骤记录下来,即描述算法。
常用的描述算法的方法有
(1)自然语言
用自然语言描述算法,最大的优点是容易理解,缺点是容易出现二义性,并且算法通常都很冗长

(2)流程图
用流程图描述算法,优点是直观易懂,缺点是严密性不如程序设计语言,灵活性不如自然语言

(3)程序设计语言
用程序设计语言描述的算法能由计算机直接执行,而缺点是抽象性差

(4)伪代码
伪代码是介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。

(5)等等…

七、算法分析
解决同一个问题总是存在着多种算法,而算法设计者在所花费的时间和所使用的空间资源往往要两者之间采取折中,通常是采用某种以空间资源换取时间资源的策略
算法设计者可以通过算法分析,判断所提出的算法是否现实,分析算法的效率以求改进

1.时间复杂性

算法运行所需要的时间,时间复杂度只与算法中语句频度最大的语句(基本语句)有关, 而其它语句的时间可以不计,用F(n)代表算法中语句频度最大的语句的频度(基本语句)
则T(n)=O(F(n)):
时间复杂度: T(n)=O(F(n))

2.空间复杂性

算法的空间复杂度是指在算法的执行过程中,需要的辅助空间数量。
辅助空间是除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间。
通常记作:
S ( n ) = O ( f ( n ))
其中, n 为问题规模,分析方法与算法的时间复杂度类似。

3.方法:
(1)事前估计法
(2)事后统计法
需先运行依据算法编制的程序软、硬件环境影响测试结果

4.最坏、最好、和平均情况

由于算法实际执行的操作往往依赖于分支条件的走向,而输入数据的取值又影响这些分支走向,因此很多算法都无法得出独立于输入数据的渐近估计。
针对这一情况,提出了最好情况估计、最坏情况估计、平均情况估计、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值