算法的表示⽅法都有哪些?

本文介绍了算法描述的多种方式,包括自然语言(易懂但复杂问题冗长)、流程图(直观但可能冗余)、N-S图(结构化但简化流程线)和伪代码(介于自然语言和编程语言,适合算法描述)。选择合适的描述方式有助于清晰表达算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题

        算法设计者必须将⾃⼰设计的算法清楚、正确地按步骤记录下来,这个过程就叫描述算法。表⽰⼀个算法,可以⽤不同的⽅法。那么算法的表⽰⽅法都有哪些呢?

二、解答

        ⼀个算法有多种表述⽅式,常见的有⾃然语⾔、流程图、N-S 图、伪代码、计算机语⾔等。下⾯分别进⾏介绍。

1、⾃然语⾔

        所谓⾃然语⾔,就是⽇常⽣活中的语⾔。它可以是汉语、英语、⽇语等,⼀般⽤于描述⼀些简单的问题、步骤,可以使算法通俗、简单易懂。下⾯通过具体实例来介绍⾃然语言。

例如,任意输⼊三个数,求这三个数中的最⼤数。

第⼀步:定义四个变量,分别为 x、y、z 以及 max 。

第⼆步:输⼊⼤⼩不同的三个数,分别赋给 x、y、z。

第三步:判断 × 是否⼤于 y ,如果⼤于,则将x的值赋给 max ,否则将y的值赋给 max 。

第四步:判断 max 是否⼤于 z,如果⼤于,则执⾏步骤五,否则将2的值赋给 max 。

第五步:将 max 的值输出。

        ⾃然语⾔最⼤的优点就是容易理解,适⽤于⽐较简单的问题。对于⽐较复杂的问题或者在描述包括分⽀或循环的算法时⼀般会很冗⻓,所以不⽤⾃然语⾔描述、表示算法,避免出现⼆义性。

2、流程图

        流程图是⼀种传统的算法表示法,它⽤⼀些图框来代表各种不同性质的操作,⽤流程线来指示算法的执⾏⽅向。由于它简单直观,易于理解,所以应⽤⼴泛。常⻅的流程图符号及流程图的例⼦如图所示。

        其中,起⽌框是⽤来标识算法开始和结束的;判断框的作⽤是对⼀个给定的条件进⾏判断,并根据给定的条件是否成⽴来决定如何执⾏后⾯的操作;连接点是将画在不同地⽅的流程线连接起来。下⾯通过⼏个例⼦来介绍图框的使⽤⽅法。

例如,求两个整数a和b的最⼤公约数。流程图如图所⽰。

判断框两侧的“Y”和“N”代表“是”(yes)和“否”(no)。

        经过研究发现,任何复杂的算法,都可以由顺序结构、选择结构和循环结构这三种基本结构组成,这三种基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从⼀个结构直接转到另⼀个结构的内部去。

3、N-S图

        既然任何算法都是由前⾯介绍的3种结构组成的,那么各基本结构之间的流程线就成了多余的。N-S流程图(这是由美国⼈L.Nassi 和 B.Shneiderman 共同提出的,故以他们名字的⾸字母命名)去掉了原来的所有流程线,将全部的算法写在⼀个矩形框内。它也是算法的⼀种结构化描述⽅法,同样也有三种基本结构。

(1)顺序结构的 N-S流程图

(2)选择结构的 N-S 流程图

        例如,输⼊⼀个数,判断该数是否是偶数,并给出相应提示。此程序的选择结构的N-S 流程图如图 所示。

(3)循环结构

        当型循环的 N-S 流程图,如图第一张所示。 例如,程序求1~100之间(包括1和100)所有整数之和的当型循环的 N-S 流程图如图第二张所示。

直到型循环的 N-S 流程图,如图第一张所示。

        例如,程序求1~100之间(包括1和100)所有整数之和的直到型循环的 N-S 流程图如图第二张 所示。

4、伪代码

        伪代码是⽤介于⾃然语⾔和计算机语⾔之间的⽂字和符号来描述算法。它采⽤某⼀程序设计语⾔的基本语法,如操作指令,可以结合⾃然语⾔来设计。⽽且,它不⽤符号,书写⽅便,没有固定的语法和格式,具有很⼤的随意性,便于向程序过渡。

下⾯通过⼀个例⼦来介绍如何⽤伪代码描述算法。

例如,⽤伪代码描述两个正整数a和b最⼤公约数的算法。

开始
c=a%b;
循环直到c=0
    a=b;
    b=c;
    c=a%b;

输出 b;
结束
注意:
    伪代码虽然不是⼀种实际的编程语⾔,但表达能⼒上类似编程语⾔,同时避免了描述技术细节带来的
麻烦,所以伪代码更适合描述算法,故被称作“算法语⾔”或“第⼀语⾔”。

三、总结

        算法的描述要根据算法的规模和组成特点来选择不同的描述⽅式。选择合适的描述⽅式,能够更清晰直接地对算法进⾏表⽰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值