伪代码书写规范

Posted on Jan 23, 2021

1 前言

伪代码(英语: pseudocode),又称为虚拟代码,是高层次描述算法的一种方法。它不是一种现实存在的编程语言。它以编程语言的书写形式指明算法的职能。伪代码可以用于帮助人们理解解释代码的语法、规则、内涵和结构。 ——维基百科

本篇文章作为以后书写伪代码的规范。

2 伪代码书写规范

2.1 说明信息

首先在一开始写下伪代码的作用、目的和作者,日期等基本信息。例:

算法:KMP 算法的实现
作者:rong
时间:2021-01-01 20:34

Input:
output:

2.2 注意事项

  1. 每行只写一条语句。
  2. 有效使用空白和缩进。
  3. 使用简单的术语。
  4. 描述清楚所有事物,但不要过度描述与主要问题无关的细节。
  5. 遇到难以用此规范表达的算法时,使用陈述句描述或借用语法。

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 参考资料

  1. 如何撰寫虛擬碼 (Pseudocode)
  2. LaTeX 中文伪代码
  3. Latex - 算法伪代码
  4. 伪代码规定
  5. Latex 写算法的伪代码排版

留言或评论请使用 Github Issues