伪代码书写规范
1 前言
伪代码(英语: pseudocode),又称为虚拟代码,是高层次描述算法的一种方法。它不是一种现实存在的编程语言。它以编程语言的书写形式指明算法的职能。伪代码可以用于帮助人们理解解释代码的语法、规则、内涵和结构。 ——维基百科
本篇文章作为以后书写伪代码的规范。
2 伪代码书写规范
2.1 说明信息
首先在一开始写下伪代码的作用、目的和作者,日期等基本信息。例:
算法:KMP 算法的实现
作者:rong
时间:2021-01-01 20:34
Input:
output:
2.2 注意事项
- 每行只写一条语句。
- 有效使用空白和缩进。
- 使用简单的术语。
- 描述清楚所有事物,但不要过度描述与主要问题无关的细节。
- 遇到难以用此规范表达的算法时,使用陈述句描述或借用语法。
2.3 注释
// 此为注释,注释使用 C++ 风格的注释
2.4 变量
变量名以单个字符为主,小写字母可以有多个,大写字母最好只有一个。
变量可以为整数、实数、字符、字符串 或 指针。
x ← 1
y ← 2
z ← 3
w ← y+1
a <-> b //交换 a 和 b 的值
2.5 代数运算
^
幂运算mod
取模and
逻辑与or
逻辑或not
逻辑非xor
逻辑异或=
等于!=
不等于/
除号*
乘号++
自增--
自减
2.6 分支/选择
if n > 0 then
print("n 是一个比 0 大的数字")
else if n < 0 then
print("n 是一个比 0 小的数字")
else
print ("n 就是 0")
end if
2.7 循环/迭代
while
用于次数未定的循环。
n ← 10
while n > 0 do
print ("n =" + n)
n ← n-1
end while
for
用于次数固定的循环。
for i ← 0 to limit by incr do
print ("hello, world!")
end for
如果想遍历某个集合:
// A 是一个 集合
for each i in A do
print("hello pseudocode")
end for
2.8 函数
返回值 :
function func_name(x, y)
...
return x + y
end func
3 实例
算法1:归并算法求逆序数
作者:chunni
时间:2021-01-21 23:37
输入: Array 数组, n 数组大小
输出: 逆序数
function MergerSort(Array, left, right)
result ← 0
if left < right then
middle ← (left + right) / 2
result ← result + MergerSort(Array, left, right)
result ← result + MergerSort(Array, middle, right)
result ← result + Merger(Array, left, right)
end if
return result
end function
function Merger(Array, left, right)
i ← left
j ← middle
k ← 0
while i < middle and j < right do
if Array[i] < Array[j] then
B[k++] ← Array[i++]
else
B[k++] ← Array[j++]
result ← result + middle - i
end if
end while
for i ← 0 to k by -1
Array[left + i] ← B[i]
end for
return result
end function
案例二:
算法2:计算 y 的 x 次方
作者:chunni
时间:2021-01-22 00:53
输入: n >= 0 and x != 0
输出: y ← x^n
y <- 1
if n < 0 then
X ← 1/x
N ← -n
else
X ← x
N ← n
end if
while N != 0 do
if N 是偶数 then
X ← X * X
N ← N / 2
else
y ← y * X
N ← N - 1
end if
end while
4 参考资料
留言或评论请使用 Github Issues。