admin管理员组

文章数量:1533899

2024年3月31日发(作者:)

《计算机软件技术基础》

第一章 算法

1.1算法的基本概念

算法:指解题方案的准确而完整的描述

算法的基本特征:

能行性(算法中的每一个步骤必须能够实现;算法执行的结果要能够达到预期的目的)

确定性(算法中的每一个步骤都必须是有明确定义的,不能摸棱两可,也不能有多义性)

有穷性(算法必须能在执行有限个步骤之后终止)

拥有足够的情报(算法执行的结果总是与输入的初始数据有关。不同输入对应不同输出)

算法:是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的、明确的,此顺序将

在有限的次数下终止。

算法的基本要素:

1.算法中对数据的运算和操作(算术运算、逻辑运算、关系运算、数据传输【赋值、输入、

输出】)

2.算法的控制结构(算法中各操作之间的执行顺序)

1.2算法描述语言

C语言描述和简单的算法描述语言

(1)符号与表达式:符号主要用以表述变量名、数组名等

(2)赋值语句

(3)控制转移语句:

无条件转移语句形式:GOTO 标号

条件转移语句形式 IF C THEN S

IF C THEN S1

ELSE S2

(4)循环语句

WHILE语句:WHILE C DO S

FOR语句:FOR i=init TO limit BY step DO S

(5)其他语句

EXIT语句:退出某个循环,使控制转到包含EXIT语句的最内层的WHILE或FOR循环后面的

一个语句去执行

RETURN语句:结束算法的执行(允许使用用引号括起来的注释信息)

READ(INPUT)和WRITE(PRINT/OUTPUT)语句:用于输入输出

(6)算法中的注释总是用一对方括号【】括起来;复合语句用一对花括号{}括起来

1.3算法设计基本方法

1.列举法【例1.1】

基本思想:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要

的,哪些是不需要的(通常解决“是否存在”“有多少种可能”类型问题)

特点:算法比较简单,但列举情况较多时,工作量将很大

寻找路径、查找、搜索等问题采用列举法有效

2.归纳法

基本思想:通过列举少量的特殊情况,经过分析,最后找出一般的关系

3.递推法(数学例题)

指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果(本质属于归纳法)

4.递归

基本思想:将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那

些简单的问题后,再沿着原来分解的逆过程逐步进行综合【例1.3】

自己调用自己的过程称为递归调用过程

递归分为

直接递归:一个算法P显式地调用自己

间接递归:算法P调用另一个算法Q,而算法Q又调用算法P

5.减半递推技术(分治法)

减半:将问题的规模减半,而问题的性质不变

递推:重复“减半”的过程【例1.4】

6.回溯法

通过对问题的分析,找出一个解决问题的线索;然后沿着这个线索逐步试探。对于每一步的

试探,如果成功,就得到问题的解;若试探失败,就逐步回退,换别的路线再进行试探。(处

理复杂数据结构方面有广泛应用)【例1.5】

1.4算法的复杂度分析

算法的复杂度主要包括时间复杂度和空间复杂度

算法的时间复杂度:指执行算法所需要的计算工作量

可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量,同时还需对问题的

规模进行度量

综上,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是

问题规模的函数,即

算法的工作量=f(n)

其中,n是问题的规模

在同一个问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用以

下两种方法来分析算法的工作量

(1)平均性态:用各种特定输入下的基本运算次数的带权平均数来度量算法分工作量A(n))

(2)最坏情况复杂性:在规模为n时,算法所执行的基本运算的最大次数W(n)

【例1.6】

算法的空间复杂度:指执行这个算法所需要的内存空间

一个算法所占用的存储空间包括:算法程序所占的空间、输入的初始数据所占的存储空间以

及算法执行过程中所需要的额外空间。

其中额外空间包括:算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空

如果额外空间量相对于问题规模来说是常数,则称该算法是原地(in place)工作的

实际问题中,为减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的

额外空间

本文标签: 算法执行问题运算基本