算法描述

算法描述是指对设计出的算法,用一种方式进行详细的描述,以便与人交流。描述可以使用自然语言、伪代码,也可使用程序流程图,但描述的结果必须满足算法的五个特征。

使用自然语言描述算法显然很有吸引力,但是自然语言固有的不严密性使得要简单清晰的描述算法变得很困难。因此,使用伪代码来描述算法是一个很好的选择。

算法的特征

  1. 输入:一个算法必须有零个或以上输入量。
  2. 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
  3. 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,通常要求实际运行结果是确定的。
  4. 有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机器只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
  5. 有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

伪代码

伪代码是自然语言和类编程语言组成的混合结构。它比自然语言更精确,描述算法很简洁;同时也可以很容易转换成计算机程序。虽然如此,但计算机科学家们从来就没有对伪代码的形式达成共识,不同作者的教材会设计他们自己的“方言”(伪代码)。幸运的是,这些伪代码都十分相似,任何熟悉一门现代变成语言的人都完全能够理解。

使用伪代码描述算法可以让程序员很容易将算法转换成程序,同时还可以避开不同程序语言的语法差别,如Pascal语言使用“:=”作为赋值,使用“=”作为比较;又如C/C++的赋值使用“=”,而判断相等的比较则是用“==”。

常用的微带关键词含义如下表所示:

伪代码 含义 C/C++语言
缩进 程序块 {}
/ / 行注释 / /
赋值 =
= 比较运算——等于 ==
比较运算——不等于 !=
比较运算——小于或等于 < =
比较运算——大于或等于 >=
for i←1 to n do For循环 for(i=1;i⇐n;i++){}
for i←n downto 1 do For循环 for(i=n;i>=1;i–){}
while i<n do Wihle循环 while(i<n){}
do while i<n Do-While循环 do {} while(i<n)
repeat until i<n Repeat循环
if i<n else If-Else语句 if(i<n){} else {}
return 函数返回值 return
A[0..n-1] 数组定义 int A[n-1]
A[i] 引用数组 A[i]
SubFun() 函数调用 SubFun()

流程图

在计算机应用早期,描述算的主要工具是流程图。流程图使用一系列相连的几何图形来描述算法,几何图形内部包含对算法步骤的描述。实践证明,除了一些非常简单的算法外,这种表示方法使用起来非常不方便。

算法描述---伪代码相关推荐

  1. 算法描述怎么写伪代码java_算法描述---伪代码

    算法描述 算法描述是指对设计出的算法,用一种方式进行详细的描述,以便与人交流.描述可以使用自然语言.伪代码,也可使用程序流程图,但描述的结果必须满足算法的五个特征. 使用自然语言描述算法显然很有吸引力 ...

  2. 《趣题学算法》—第0章0.3节算法的伪代码描述

    本节书摘来自异步社区<趣题学算法>一书中的第0章0.3节算法的伪代码描述,作者徐子珊,更多章节内容可以访问云栖社区"异步社区"公众号查看. 0.3 算法的伪代码描述 上 ...

  3. 算法描述怎么写伪代码java_伪代码描述算法

    伪代码是自然语言和类编程语言组成的混合结构.它比自然语言更精确,描述算法很简洁:同时也可以很容易转换成计算机程序.下面就为大家介绍一下伪代码描述算法的介绍. 伪代码描述算法 一.算法描述是指对设计出的 ...

  4. MD5 算法描述及实现

    MD5 算法的原理及实现 章节目录 简介 算法描述 实现 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 简介## Wiki对其 ...

  5. C语言描述算法的常用方法是,认识C语言 -算法描述的5种方法

    在 C语言中,有 5 种常用的算法描述方法:自然语言.流程图.N-S 图.伪代码和程序设计语言. 1. 自然语言描述算法 上一讲<算法是什么>中给出的解决问题的算法 a.算法 b 和算法 ...

  6. SHA算法描述及实现

    SHA 算法的原理及实现 章节目录 简介 算法描述 2.1 数据准备 2.1.1 <数据填充 2.1.2 数据分块 2.1.3 设置初始 Hash 值 2.2 Hash 计算 2.2.1 SHA ...

  7. 基于时间片优先级排课算法描述

    在描述算法之前我们把一些概念先讲清楚.在这里我们把从行政角度分的班叫自然班,把在同一个教室上课的班叫做排课班.在大学里有些公共课是几个排课班通过多媒体来一起上的,我们把这个排课班的总和叫做公共班.班级 ...

  8. otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

    from:http://blog.csdn.net/onezeros/article/details/6136770 otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见ots ...

  9. 7.使用php描述冒泡排序,PHP 数据结构 算法描述 冒泡排序 bubble sort

    PHP 数据结构 算法描述 冒泡排序 bubble sort 复制代码 代码如下: /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循 ...

最新文章

  1. 第1关:实现一个顺序存储的线性表
  2. Camera开发系列之六-使用mina框架实现视频推流
  3. geohash 附近搜索
  4. Leetcode 383 Ransom Note
  5. 关于系统用户数,并发用户数,在线用户数,吞吐量
  6. git/ TortoiseGit 在bitbucket.org 使用证书登陆
  7. HDU - 6464 免费送气球(线段树二分)
  8. 错误记录:发送广播是报空指针
  9. .Net 1.1 到 .Net 2.0 开发日志
  10. Meteor:快到飞起来的全栈JavaScript开发平台
  11. atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
  12. VMware vSphere 8 发布(含下载)
  13. Hacking Diablo II之外挂实战教程:去除D2JSP试用版显示的Trial Version信息
  14. c语言16进制与字符串互转,C语言版的16进制与字符串互转函数
  15. Flutter开发之——Future<dynamic> is not a subtype of type () void
  16. 《德鲁克管理思想精要》读书笔记7 - 如何做人
  17. Prematurely reached end of stream
  18. 整合xxl-job-admin动态添加xxl-job定时任务
  19. 群晖218J安装mysql_群晖218j和218+选择哪个?
  20. [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料

热门文章

  1. 告诉一个远程团队协作的故事
  2. C/C++游戏项目完整教程:《坦克大战》
  3. 【广告计算】互联网控制舆论的三个方法
  4. 彻底解决win10时间同步失败
  5. CDH-TXKT-hive、impala
  6. 渲染图用计算机配置,3d渲图电脑配置清单
  7. (Window环境) curl: (6) Could not resolve host: application curl: (6) Could not resolve host: ‘localhos
  8. 南通大学python期末考试试卷答案_南通大学自动评教脚本(python)
  9. Java英语单词(5000个)
  10. mysql | left join 出现的结果会重复的问题