数据结构1

数据结构1

数据结构讨论的范畴:

Algorithm + Data Structures = Programs

—— Niklaus Wirth

Programs : 为计算机处理问题编制一组指令集

Algorithm:  处理问题的策略

Data Structure: 问题的数学模型

概括地说:

数据结构描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中的表示和实现。

数据:是计算机处理的信息的某种特定的符号表示形式。

数据结构:带结构的数据元素的集合。

数据结构的形式定义为:

数据结构时一个二元组

=(D, S)

抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。

ADT有两个重要特征:

数学抽象 ADT描述程序处理的实体时,强调的是其本质的特征,其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)

数据封装

将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

抽象数据类型的描述方法

抽象数据类型可用(D, S, P)三元组表示,其中,D是数据对象,SD上的关系集,P是对D的基本操作集。

抽象数据类型的表示和实现:

抽象数据类型需要通过固有的数据类型(高级编程语言汇总已实现的数据类型)来实现。

算法和算法的度量

算法:是为了解决某类问题而规定的一个有限长的操作序列,一个算法必须满足以下五个重要特性:

有穷性,确定性,可行性,输入,输出

算法效率的衡量方法和准则:

事后统计法: 缺点:1.必须执行程序。 2。其它因素掩盖算法的本质。

事前分析估算:算法选用的策略,问题的规模,编写程序的语言,编译程序产生的机器代码的质量,计算机执行指令的速度。

一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。

假如,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作: T(n)=O((f(n)))

算法=控制结构+原操作(固有数据类型的操作)

算法的执行时间=原操作的执行次数*原操作的执行时间

算法的存储量包括:

1.    输入数据所占空间; 2.程序本身所占空间 3.辅助变量所占空间。

2.    若输入数据所占空间只取决与问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占的额外空间。若所需额外空间相对于输入数据量而言是常量,则称此算法为原地工作。

抽象数据类型线性表的定义如下:

ADTList {

数据对象:

D={ai| ai C ElemSet, i=1,2,….n, n>=0}

{n为线性表的表长;n=0时的线性表为空表}

}

数据关系:

R1={<ai-1,ai>|ai-1, aiCD, i=2..n}

{设线性表的元素}

基本操作:

{结构初始化}

InitList(&L)

操作结果:构造一个空的线性表L

{销毁结构}

DestroyList(&L)

初始条件:线性表L已存在

操作结果:销毁线性表L

 

 

你可能感兴趣的:(Algorithm,数据结构,算法,工作,语言,structure)