【个人版】伪代码规范_伪代码书写规范-程序员宅基地

技术标签: 程序员必备技能  算法  

一、概述

伪代码是一种介于自然语言和编程语言之间的算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。

a.伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。
b.伪代码的主要目标是解释程序的每一行应该做什么,从而使程序员更容易构建代码构建阶段。
c.伪代码可以帮助人们理解解释代码的语法、规则、内涵和结构。

二、必要说明

1、虽然有一些正规的伪代码定义,但在实际应用中,并不需要太拘泥于伪代码的格式。主要目标是描述算法梗概,避开细节,启发思路。
2、一般而言,急于编写程序往往会拖累进度。
3、把伪代码改写成程序时,一般先选择较为容易的任务来完成。
4、在软件开发工程中,编写程序所需的工作量只占软件开发全部工作量的10%~20%。

三、书写规范

a.说明信息

首先在一开始写下伪代码的作用、目的和作者,日期等基本信息。例:
算法:KMP 算法的实现
作者:路人
时间:2022-01-17 15:34	
Input:
output:

b.注意事项

1.	使用简单的术语,每行只写一条语句。
2.	有效使用空白和缩进。
3.	描述清楚所有事物,但不要过度描述与主要问题无关的细节。
4.	遇到难以用此规范表达的算法时,使用陈述句描述或借用语法。
5.	在算法中的某些指令或子任务可以用文字来叙述,例如,”设x是A中的最大项”,这里A是一个数组;这样做的目的是为了避免因那些与主要问题无关的细节使算法本身杂乱无章。

c.变量

定义变量的语句可不用写出来,但必须在注释中给出。示例如下:
赋值:  x ← y+1 
交换 a 和 b 的值:  a <-> b 

d.代数运算符号

幂运算 ^
取模 mod
逻辑与 and
逻辑或 or
逻辑非 not
逻辑异或 xor
(其他与C语言符号相同)

e.流程书写

1.分支
if n > 0 then
	print("n 是一个比 0 大的数字")
else if n < 0 then
	print("n 是一个比 0 小的数字")
else
	print("n 就是 0")
end if
2.循环
1while 用于次数未定的循环。
n ← 10
while n > 0 do
	print ("n =" + n)
	n ← n-1
end while2for 用于次数固定的循环。
for i ← 0 to limit by incr do
	print ("hello, world!")
end for3)如果想遍历某个集合:
// A是一个集合
for each i in A do
	print(i "hello pseudocode")
end for

f.函数

//必要情况下,附上说明函数功能以及返回值类型,格式如下
//返回值类型:功能说明
function func_name(x, y)
	...
	return x + y
end func

四、范例

买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择某一天 买入这只股票,并选择在未来的某一个不同的日子卖出该股票。
设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
     
示例 2:
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
算法:买卖股票最大利润
作者:路人乙
时间:2021-01-21 23:37

输入: prices数组
输出: 最大利润

function maxProfit( prices ) 
  max ← 0
  //maxi为第i天卖出股票的最大利润
  maxi ← 0
  for i ← 1 to i < prices.length by i++ do
	if maxi > 0 then
		maxi ← maxi + 今天股票的差价(p[i]-p[i-1]else
		maxi ← 今天股票的差价
	end if
	if maxi > max then
		max ← maxi
  end for
  return max
end function
C++实现代码
class Solution {
    
public:
    int maxProfit(vector<int>& prices) {
    
        int length=prices.size();
        int max=0;
        //maxi为第i天卖出股票的最大利润
        int maxi=0;
        for(int i=1;i<length;i++){
    //第i天卖出股票
            if(maxi>0){
    //如果前一天卖出股票有挣钱,今天卖出股票所挣的最多金额为昨天的加今天股票的差价
                maxi=maxi+prices[i]-prices[i-1];
            }
            else{
    //否则,今天卖出股票所挣的最多金额仅为今天股票的差价
                maxi=prices[i]-prices[i-1];
            }
            if(maxi>max) max=maxi;//比较早些时候卖出股票的情况
        }
        return max;
    }
};

伪代码是为让思路更清晰,突出主要矛盾,而不是写“八股文”!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41783242/article/details/123312028

智能推荐

Word插件开发

创建一个新的 Office 插件项目:在 Visual Studio 中,选择"文件" -> “新建项目”,然后在模板中选择"Office/SharePoint",选择适当的 Office 插件项目模板,如 Word 插件、Excel 插件或 PowerPoint 插件。设计用户界面:在解决方案资源管理器中,打开你的插件项目,并在其中打开相应的 Office 文件(如 Word 文件、Excel 文件或 PowerPoint 文件)。你可以在 Office 应用中测试插件的功能,并在开发过程中进行调试。

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

face++实现人脸识别及人脸相似度对比_face++人脸识别 html5-程序员宅基地

文章浏览阅读4.8k次。使用face++,先获取key和secret下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像处理控件 http_url =&amp;amp;amp;quot;https://a..._face++人脸识别 html5

desencrypt java md5_Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类-程序员宅基地

文章浏览阅读322次。很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;im..._java desencrypt.encrypt(pass)

BZOJ 2818 欧拉函数,线性筛_线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj-程序员宅基地

文章浏览阅读145次。题目链接:https://www.acwing.com/problem/content/description/222/给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤10^7输入样例:4..._线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj

随便推点

UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)_uva12534-程序员宅基地

文章浏览阅读687次。题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是_uva12534

免费SSL证书_csdn alphassl免费申请-程序员宅基地

文章浏览阅读504次。1、Let's Encrypt 90天,支持泛域名2、Buypass:https://www.buypass.com/ssl/resources/go-ssl-technical-specification6个月,单域名3、AlwaysOnSLL:https://alwaysonssl.com/ 1年,单域名 可参考蜗牛(wn789)4、TrustAsia5、Alpha..._csdn alphassl免费申请

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

【数据结构】静态表查找之顺序查找、二分查找、分块查找_读取表元是什么意思-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏23次。​通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。_读取表元是什么意思

如何设置交易滑点?精确到tick 测算期货冲击成本(附源码)_滑点设置多少合适-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏18次。我们在非撮合回测模式下,因为无法获知交易价格当时的真实盘口价差、挂单数量,常主观设定一个滑点均值,比如针对螺纹钢等合约,设置 1 跳,针对某些交易不活跃的品种,设置 2 跳。但是这种近乎拍脑袋的方法并不精确。我们今天尝试通过简单的辅助工具,实现尽可能接近准确的 tick 级别滑点设置,代码已写好,不用编程也可获得结果。_滑点设置多少合适

推荐文章

热门文章

相关标签