第一章 绪论

数据结构概念

有结构的数据元素的集合(相互之间有某种特定关系的数据元素的集合)

(包括数据元素的集合,数据元素关系的集合)

 

数据结构主要研究内容

1.       各类数据结构的逻辑结构,物理结构以及它们之间的关系

2.       为每种数据结构定义了基本运算

3.       能利用数据结构和基本运算编制相应的算法

4.       分析算法效率(主要从时间角度)

 

基本术语

数据(Data):所有能被计算机处理的符号的集合。

数据元素(Data Element:数据这个集合中的一个个体。设给定数据集合D={d1,d2,…dn}di属于D,并称di为数据元素。

数据对象(Data Object:具有相同性质的数据元素的集合。数据的一个子集。

数据项(Data Item):数据元素常常可以分为若干个数据项,数据项是数据具有意义的最小单位。

(万事万物=>数据=>数据结构)

数据结构(Data Structure):带有结构(联系)数据元素的集合。即数据元素之间的运算及运算规则。

用集合形式描述,数据结构是一个二元组:DS=D,R)(D:数据元素的集合 RD上关系的集合)

逻辑结构(Logical Structure):数据元素之间的结构关系。

物理结构(Physical Structure):数据结构在计算机内的表示。

 

算法描述和算法分析

一、             算法(Algorithm

1.       概念:算法是一个有限的指令集,遵循指令流可以完成特定的功能

2.       算法的基本特性:

1)  有穷性:算法经过有限步后结束;(算法是程序指导,程序在计算机中可以无穷循环)

a)算法是有穷指令集

b)指令流程中若有循环,循环必须经过有限步骤后终止。

2)  确定性:下一步必须是明确的;(不能有二义性)

3)  可行性:每一步是可执行的;

3.       算法和程序的区别

算法:解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法。

程序:用某种程序设计语言对算法的具体实现。

(算法和程序体现在软件生命周期的不同阶段)

软件生命周期1.需求调研 2.概要设计(划分子系统,子系统划分模块) 3.详细设计(实现每一个模块的功能,编制算法实现:自然语言,程序框图) 4.编码实现

区别:

程序可以是无穷的,例如OS,算法的是有穷的;

程序可以是错误的,算法必须是正确的;

程序用程序设计语言描述,在机器上可以执行;算法还可以用框图、自然语言等描述。

 

二、             算法描述语言——类Pascal

所有算法均以过程(没有返回值,直接作为一条语句使用)或函数的形式表示;

PROC 过程名(参数表);

{算法说明}

语句组

ENDP;{过程名}

FUNC函数名(参数表):类型;

{函数说明}

语句组

RETURNf

ENDF{函数名}

调用过程语句:过程名(参数表)

调用函数语句:变量名:=函数名(参数表)

 

算法语句

出错语句:ERROR(‘出错信息’);程序直接返回

注释语句:{注释内容}

语句结束符号:‘;’

语句组符号:[  ]

基本函数:max()、min()、abs()、eof文件、eoln行结束

布尔运算:AND(算出两边的值)、ORNOTCAND(若左边为零时直接给出结果0,提高效率)、COR

赋值语句:变量名:=表达式;

分支语句:IF 条件THEN 语句 ELSE 语句;

          CASE

          条件1:语句1

                     .……

          条件n:语句n

         ELSE 语句n+1

          ENDC

循环语句:

FOR 变量名:=初值TO终值DO循环体;(初值小于中值)

FOR 变量名:=初值DOWNTO终值DO循环体;(初值大于终值)

WHILE条件DO循环;(条件为真执行循环体直到条件为假)

REPEAT循环体UNTIL条件;(先执行循环体然后判断条件,直到条件为真)

标准输入输出过程:read(变量表);write(变量表)

 

三、             算法分析

衡量算法好坏的三个尺度:

运行所花费的时间(算法的时间特性);

所占用的存储空间的大小(算法的空间特性);

其他(可读性、易调性、健壮性等)。

 

算法的时间特性:

语句频度(Frequency Count):语句可能重复执行的最大次数。(着重考虑循环)

时间复杂度(Time Complexity):设算法中所有语句的语句频度为tn),fn)是当n趋向无穷大时与tn)为同阶无穷大,则算法的时间复杂度Tn=O(f(n))

其中:n为算法计数量或称为规模(size);

fn)是运算时间随n增大时的增长率;

Ofn))是算法时间特性的量度。

例:程序段                                  语句频度                                  时间复杂度

1  x=x+1                                             1                                 O1)常数阶

2  FOR i=1TO n DO x=x+1               n+1                              On)线性阶

3  FOR i=1TO n DO                                n+1

           FOR j=1 TO n DO x=x+1                nn+1                     On2)平方阶

注:

1)注意时间复杂度的规范化写法

2)时间复杂度的n不带系数,需简化

3)区分语句频度和时间复杂度,时间复杂度是针对整个算法而言的,不是针对某一个语句而言的。

 

算法与时间复杂性的关系

设:A1A2A3是求解同一问题的不同算法,其时间复杂度分别为:OnOnlognON!)。C1C2为计算机,且C2的计算速度是C110倍。

复杂度              C1可解规模         C2可解规模         可解规模的关系

On                    N11                      N21               N21=10N11

Onlogn              N12                      N22               N22=10N12

ON!)                  N13                     N23               N23=N13+小常数

(低效算法在低速和高速计算机上运行无大区别,高速计算机无法弥补低效算法)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值