数据结构笔记 第一章 绪论

数据结构发展的三个阶段
(1)无结构阶段
(2) 结构化阶段
程序=数据结构 + 算法
数据结构和算法是构成程序的两个重要的组成部分,一个软件系统通常是以一个或几个关键数据结构为核心而组织的。
(3)面向对象阶段(是目前最流行的程序设计技术)
对象=数据结构+算法
程序=对象+对象+。。。。

用计算机求解问题一般包含两个步骤:
⑴ 抽象出问题的模型;
⑵ 求该模型的解。

数据是对客观事物的符号表示,在计算机科学中是指能输入到计算机并被计算机程序处理的符号的总称,一般可分为数值数据、文本数据、图形图像数据和音响数据等。
数据元素是数据的基本单位,也可以称为结点,在计算机程序中通常作为一个整体进行考虑,一般由若干数据项组成,数据项是构成数据元素最小的、不可分割的单位。

数据处理:对数据进行检索、插入、删除、合并、拆分、排序、统计、计算、转换、输入、输出等的操作过程。

数据结构:相互之间存在一定关系的数据的集合,是数据及其元素之间相互关系的表示。

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

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

逻辑结构
线性结构,树型结构,图结构,集合

存储结构的分类: 1. 顺序结构 2. 链式结构
用一块无空隙的存储区域存储数据称为顺序存储,顺序存储把一组结点存储在按地址相邻的顺序存储单元里,结点间的逻辑后继关系用存储单元的自然顺序关系来表达 。
利用指针,在结点的存储结构中附加指针字段称为链接法。两个结点的逻辑后继关系可以用指针的指向来表达。任意的逻辑关系,也可以使用这种指针地址来表达。一般的做法是将数据结点分为两部分:数据字段和指针字段。

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

ADT定义
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作 1
前置条件:执行此操作前数据所必须的状态
输入:执行此操作所需要的输入
功能:该操作将完成的功能
输出:执行该操作后产生的输出
后置条件:执行该操作后数据的状态
操作 2
……
……
操作 n
endADT

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

常用的描述算法的方法有:自然语言,流程图,程序设计语言,伪代码等。

解决同一个问题总是存在着多种算法,而算法设计者在所花费的时间和所使用的空间资源往往要两者之间采取折中,通常是采用某种以空间资源换取时间资源的策略
算法运行所需要的时间,称为时间复杂性。通常用事前估计法和事后统计法
算法运行所需要的辅助空间,称为空间复杂性

事后统计法:在算法中的某些部位插装时间函数 time ( )测定算法完成某一功能所花费时间
缺点:需先运行依据算法编制的程序。软、硬件环境影响测试结果

事前估计法:用基本语句执行次数度量算法时间复杂性
n
程序的执行时间: ∑ 语句 i 的执行次数×执行时间(计算机执行简单操作的时间,可认为是常量。)
i=1
语句频度:语句重复执行的次数
时间复杂度只与算法中语句频度最大的语句(基本语句)有关,而其它语句的时间可以不计。用F(n)代表算法中语句频度最大的语句的频度(基本语句)

很多算法都无法得出独立于输入数据的渐近估计,针对这一情况,提出了最好情况估计、最坏情况估计、平均情况估计

你可能感兴趣的:(数据结构笔记 第一章 绪论)