教你写一手漂亮的伪代码(详细规则简单实例)
文章目录
- 前言
- 伪代码的7个主要部分
- 1.算法名称
- 2.指令序列
- 3.输入/输出
- 4.分支选择
- 5.赋值
- 6.循环
- 7.算法结束
- 补充
- 举个例子
- 说明
前言
最近在复盘《算法设计与分析》这门课程的时候,发现老师写得一手漂亮的伪代码,着实羡慕不已,看他写其实已经知道大致写伪代码的规则,但本着严谨的态度,还是系统的学习和整理出来。在学习过程中,我们不可能将每一个算法都完完整整敲一遍,那么伪代码就可以很快捷和清晰的写出对一个算法的解决思路。
我在网上查到的博客中要么写的过于繁琐,要么就是没有实例,这也激起了我想要整理这篇文章的动力,若文章中有错误或者不足,希望大家指出。
伪代码的7个主要部分
- 算法名称
- 指令序列
- 输入/输出
- 分支选择
- 赋值
- 循环
- 算法结束
文章将从这7个部分依次进行说明
1.算法名称
有两种表示算法的伪代码:
过程(Procedure)
函数(Function)
过程和函数的区别是:
过程是执行一系列操作,不需要返回操作的结果,无返回数据。
函数是执行一系列的操作后,要将操作的结果返回,有返回数据。
简单来说二者就是有没有返回数据。
算法伪代码的书写规则:
Procedure <算法名>([<参数列表>])
Function <算法名>([<参数列表>])
2.指令序列
指令序列是算法的主体。
指令序列的书写规则:
用Begin作为开始,用End作为结束;
或者用“{”作为开始,用“/}”作为结束
例如:
Begin指令序列;
End
或者
{指令序列;
/}
说通俗一点就是类似于我们写C语言只要在{ }
中的都是这个函数的指令序列。最后面会给一个完整的例子,方便理解
3.输入/输出
输入:Input
输出:Output 或Return
看个人的习惯吧,我输出一般用Return
4.分支选择
总体有两种分支,类似于C中的if语句 和if else语句用法是一样的,可以嵌套。
//第一种
If<条件> Then{指令序列;/}
//第二种
If<条件> Then{指令序列1;/}
Else{指令序列2;/}
5.赋值
有两种 可以用:=
或者<-
作为赋值操作符,相当于C语言中的=
例如:
x:=x+1;
x<-x+1;
选择哪个,看自己的习惯吧
6.循环
两种方式:计数式循环(for循环)和条件式循环(while循环)。
(1)计数式循环
For 变量:=初值 To 终值
{指令序列;
/}
循环次数:终值-初值+1
(2)条件式循环
While (条件) do
{指令序列;
/}
7.算法结束
关键字End的后面加上算法名称,表示算法结束,是算法的最后一句。
例如:
End DFS
补充
除了这些,像运算符号* / + - %等等,都是和C语言用法一样
数组:
A[j]指示数组A的第j个元素。符号“ …”用来指示数组中值的范围。例如:
A[1…j]表示含元素A[1], A[2], … , A[j]的子数组;
还有个写法是A[0:n]表示数组下标从0开始一直到n
二维数组也是:A[0:m,0:n]
举个例子
例如冒泡排序的伪代码:
会发现伪代码的7大部分没有提到的内容是:
变量名 : 数据类型
还有var
这是变量的意思,如果学过javascript应该会有比较深一点的理解,我在这里理解就是告诉读者,这是一个变量。
procedure Bubble(n:integer);var temp,i,j:integer;change:boolean;beginfor i:=1 to n-1 dobeginchange:=false;for j:=n-1 downto i doif a[j]>a[j+1] thenbeginchange:=true;temp:=a[j]; a[j]:=a[j+1]; a[j+1]:=temp;end;if not(change) then exit;end;end;
再举个插入排序的例子
procedure insertsort(n:integer);var i,j:integer;beginfor i:=2 to n dobegina[0]:=a[i];j:=i-1;while a[j]>a[0] do begina[j+1]:=a[j];j:=j-1;end;a[j+1]:=a[0];end;end;
关于语句后面有没有分号,我看有些人说有,有些说没有,其实拟C伪代码可以加分号,这样看起来更习惯
说明
这个伪代码是算法比较规范的伪代码规则,我在网上查到有java的伪代码,python伪代码,php伪代码等等,和其他的,我的理解就是把没有完整实现的代码叫做了伪代码,其实只要能够清楚表达思路,让别人很容易理解,都可以称作伪代码吧。不受严格语法的约束,我想这也是伪代码写起来比较快乐的原因吧。
如果文章对你有帮助,不要忘了给我点个赞吼( ̄▽ ̄)~
欢迎关注我的微信公众号:松鼠技术站
教你写一手漂亮的伪代码(详细规则简单实例)相关推荐
- python怎么定义未知数_码如其人,同学你能写一手漂亮的Python函数吗
原标题:码如其人,同学你能写一手漂亮的Python函数吗 选自 hackernoon 作者:Jeff Knupp 在机器学习中,我们经常需要使用类和函数定义模型的各个部分,例如定义读取数据的函数.预处 ...
- 五分钟写一手漂亮的markdown--基础篇
Markdown快速入门–基础篇 文章目录 Markdown快速入门--基础篇 一,标题 二,段落格式 三,字体设置 四,各种线 五,代码 六,列表 七,区块 八,超链接 九,图片 图片描述 十,表格 ...
- 前端开发:如何写一手漂亮的 Vue
前几日听到一句生猛与激励并存,可怕与尴尬同在,最无奈也无解的话:"90后,你的中年危机已经杀到".这令我很受触动.显然,这有些夸张了,但就目前这日复一日的庸碌下去,眨眼的功夫,那情 ...
- “写”一手漂亮的好字,还会“画画”
字虽写的不好看,多亏有了电脑,让我可以打出漂亮的字,今天我们学习下,在 CSS 中如何使用不同的字体.并介绍 element-ui 的图形字体是如何实现的. 在 mac.或者 window 系统中预置 ...
- python怎么命名未知数_码如其人,小老弟,你能写一手漂亮的Python函数吗
与多数现代编程语言一样,在 Python 中,函数是抽象和封装的基本方法之一.你在开发阶段或许已经写过数百个函数,但并非每个函数都生而平等.写出「糟糕的」函数会直接影响代码的可读性和可维护性.那么,什 ...
- google python代码规范_如何用好python编码规范,写一手漂亮的代码
前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...
- pep8 python 编码规范_如何用好python编码规范,写一手漂亮的代码
前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...
- matlab画服装版,教你画一手漂亮的服装款式图!(手绘款式图模板)
(添加时备注姓名/学校或城市) 服装平面款式图是一种单纯的服装平面展示图,是要按照人体的比例关系来进行绘制,可作为时装效果图的款式细节,工艺表现进行辅助和补充说明.在绘制的过程中要求比例结构合理,线条 ...
- Paxos协议超级详细解释+简单实例
Basic-Paxos算法(可以先看后面的实际例子再看前面的具体介绍部分) Paxos算法的目的 Paxos算法的目的是为了解决分布式环境下一致性的问题. 多个节点并发操纵数据,如何保证在读写过程中数 ...
最新文章
- 贝佐斯明抢马斯克太空生意:数十亿美元组卫星互联网,5年内发射3236颗卫星...
- python array_python数组array.array(转帖)
- 纯c语言实现动态分配多维数组的方法
- android 4.4.2截屏方法,android4.4.2 使用 uiautoviewer 截屏报错
- yum 来安装 nodejs
- 自己搭建mysql服务要知道的二三事
- iQOO Pro 5G版今日正式开售:售价最亲民的5G旗舰
- Centos7.9安装Mysql5.7.32_mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar_亲测成功---Linux工作笔记041
- Auto.js 全命令整理(三) 输出专题
- 吴恩达神经网络和深度学习-学习笔记-23-快速搭建你的第一个系统原型,然后迭代
- android中在java代码中设置Button按钮的背景颜色
- 封装数据库增删该通用方法
- 推荐C语言视频<<跟着星仔学C语言>>
- Android代码查看Android版本
- h5 android上传本地视频文件,关于webview适配H5上传照片或者视频文件的方法
- 实测榛子云短信平台短信接收速度
- 汽车销量查询小助手(小程序)销量趋势图功能及代码知识分享
- portal服务器认证系统有哪些,Portal技术简介
- java 假设检验_Spark机器学习-Java版(二)-相关系数和假设检验
- 2_嵌入式软件开发简介
热门文章
- 新东方雅思词汇(List 16 ~ List 20)
- 程序猿里面的“一阳指”,一个合格的程序猿是怎样炼成的?
- 顺序二叉树(堆)与链式二叉树的C语言实现
- python冒泡排序原理_python冒泡排序详解
- 小程序获取用户信息无法得到问题
- Minimum/Maximum Spanning Tree/Forest
- 【C++标准库】7-STL容器-Map与Multimap-导读-能力-操作函数
- 【深思】魏则西,你为何死揪百度不放——媒体的腐烂与变质!
- 有64个格, 第1个格子里面1粒麦子, 第2个格子里面2粒麦子(2021/1/15)
- appium移动端python大麦网抢票