Articles

算法导论(第三版)伪代风格的改进

算法导论(第二版)中所使用的伪代码的风格有点另类,例如下面这个算法:

Left-Rotate(T, x)
  y ← right[x]        ∆ Set y.
  right[x] ← left[y]  ∆ Turn y's left subtree into x's right subtree.
  p[left[y]] ← x
  p[y] ← p[x]
  if p[x] = nil[T]
    then root[T] ← y
    else if x = left[p[x]]
           then left[p[x]] ← y
           else right[p[x]] ← y
  left[y] ← x              ∆ Put x on y's left.
  p[x] ← y

算法导论(第三版)对上述伪代码的格式进行了改进:

Left-Rotate(T, x)
1  y = x.right        // set y
2  x.right = y.left   // turn y's left subtree into x's right subtree
3  if y.left ≠ T.nil
4     y.left.p = x
5  y.p = x:p          // link x's parent to y
6  if x.p == T.nil
7     T.root = y
8  elseif x == x.p.left
9     x.p.left = y
10 else x.p.right = y
11 y.left = x         // put x on y’s left
12 x.p = y

改进后的风格跟面向对象的风格有点类似,阅读起来顺眼很多:

  1. 注释不再使用∆,而改用//
  2. 赋值不再使用←,而改用=
  3. 相等不再使用=,而改用==
  4. 取属性不再用[],而改用.

这样改进后,伪代码的风格跟C++、Java很类似了。