算法导论中的伪代码

  • 伪代码没有统一的规范,但是按照某种约定写出的伪代码更具有可读性。

  • 本文总结了《算法导论》第三版中的伪代码格式[p11、p12]

格式约定

  • 缩进表示块结构,而不是用begin和end语句,这样的好处是提高代码的清晰性

  • 语句结尾不需要加冒号:或者分号;

  • 选择用if-else语句

  • 循环用关键字while/for i=2 to A.length by 1/repeat-until语句,注意for循环中,循环结束的条件是i=A.length+1,默认参数递进是1(可省略),其他参数如递进为2需写为by 2

  • //后是注释

  • 多重赋值和编程语言中一致

  • 变量不需要声明类型

  • 无特殊说明,不适用全局变量

  • 数组用数组名[下标]访问,《算法笔记》中建议A[i]表示第i个元素,大小为n的数组元素分别为A[1],A[2],...,A[n],子数组表示为A[1..j],包含从A[1]A[j]

  • 逻辑运算用andornot,其中前两者是短路的,和大多数程序语言保持一致

  • 复合数据被组织为对象,对象由属性组成,属性的访问用.,和c++一致

  • 参数传递的过程和python类似,复杂对象(如数组)采用引用传递,简单数据类型采用值传递

  • 空指针用特殊值NIL表示

  • 允许return语句返回多个值,和python保持一致

  • 建议不采用《算法导论》中的这种数组表示,下标还是从0开始

  • 《算法导论》中未指定通过指针访问对象属性的约定,建议和C++保持一致,用->

  • 循环时也建议采用for in语句,可代替属于符号

伪代码举例

  • 插入排序[p10]

对数组A[0..n-1]进行插入排序

  • 快速排序[p95]

Last updated

Was this helpful?