伪代码书写规范
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。