latex伪代码
来源:互联网 发布:淘宝如何做全屏首页 编辑:程序博客网 时间:2024/04/28 04:53
algorithmic和algorithmicx
介绍下algorithmic和algorithmicx,这两个包很像,很多命令都是一样的,只是algorithmic的命令都是大写,algorithmicx的命令都是首字母大写,其他小写(EndFor两个大写)。下面是algorithmic的基本命令
\STATE <text>
\IF{<condition>} \STATE{<text>} \ENDIF
\FOR{<condition>} \STATE{<text>} \ENDFOR
\FOR{<condition> \TO <condition> } \STATE{<text>} \ENDFOR
\FORALL{<condition>} \STATE{<text>} \ENDFOR
\WHILE{<condition>} \STATE{<text>} \ENDWHILE
\REPEAT \STATE{<text>} \UNTIL{<condition>}
\LOOP \STATE{<text>} \ENDLOOP
\REQUIRE <text>
\ENSURE <text>
\RETURN <text>
\PRINT <text>
\COMMENT{<text>}
\AND, \OR, \XOR, \NOT, \TO, \TRUE, \FALSE
对比看一下,下面是algorithmicx包的基本命令
\State <text>
\If{<condition>} <text> \EndIf
\If{<condition>} <text> \Else <text> \EndIf
\If{<condition>} <text> \ElsIf{<condition>} <text> \Else <text> \EndIf
\For{<condition>} <text> \EndFor
\ForAll{<condition>} <text> \EndFor
\While{<condition>} <text> \EndWhile
\Repeat <text> \Until{<condition>}
\Loop <text> \EndLoop
\Require <text>
\Ensure <text>
\Function{<name>}{<params>} <body> \EndFunction
\State \Return <text>
\Comment{<text>}
另外,还有3个修改algorithm标签,require标签,ensure标签显示的三个命令:
\floatname{algorithm}{算法}
\renewcommand{\algorithmicrequire}{\textbf{输入:}}
\renewcommand{\algorithmicensure}{\textbf{输出:}}
algorithmicx例子
正好学着用algorithmicx写了下归并排序求逆序数,代码如下
\documentclass[11pt]{article}\usepackage{CJK}\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}\usepackage{algorithm}\usepackage{algorithmicx}\usepackage{algpseudocode}\usepackage{amsmath} \floatname{algorithm}{算法}\renewcommand{\algorithmicrequire}{\textbf{输入:}}\renewcommand{\algorithmicensure}{\textbf{输出:}} \begin{document}\begin{CJK*}{UTF8}{gkai} \begin{algorithm} \caption{用归并排序求逆序数} \begin{algorithmic}[1] %每行显示行号 \Require $Array$数组,$n$数组大小 \Ensure 逆序数 \Function {MergerSort}{$Array, left, right$} \State $result \gets 0$ \If {$left < right$} \State $middle \gets (left + right) / 2$ \State $result \gets result +$ \Call{MergerSort}{$Array, left, middle$} \State $result \gets result +$ \Call{MergerSort}{$Array, middle, right$} \State $result \gets result +$ \Call{Merger}{$Array,left,middle,right$} \EndIf \State \Return{$result$} \EndFunction \State \Function{Merger}{$Array, left, middle, right$} \State $i\gets left$ \State $j\gets middle$ \State $k\gets 0$ \State $result \gets 0$ \While{$i<middle$ \textbf{and} $j<right$} \If{$Array[i]<Array[j]$} \State $B[k++]\gets Array[i++]$ \Else \State $B[k++] \gets Array[j++]$ \State $result \gets result + (middle - i)$ \EndIf \EndWhile \While{$i<middle$} \State $B[k++] \gets Array[i++]$ \EndWhile \While{$j<right$} \State $B[k++] \gets Array[j++]$ \EndWhile \For{$i = 0 \to k-1$} \State $Array[left + i] \gets B[i]$ \EndFor \State \Return{$result$} \EndFunction \end{algorithmic} \end{algorithm}\end{CJK*}\end{document}
最后的排版结果如下
LaTeX 中算法有关宏包和命令的使用
首先,需要使用以下宏包,
\usepackage{algorithm}
\usepackage{algorithmic}
• 输入、输出和返回值
此外如果算法有标准的输入和输出,以及返回值,可以使用相应的输入、输出、返回值命令,输入、输出、返回值命令依次分别为:
% 该命令为输入参数说明的命令,至于命令的 "~~",具体作用也不清楚,参考的链接中是这样给的,
\REQUIRE ~~ \\
% 以下命令为输出参数说明的命令
\ENSURE ~~ \\
% 使用返回值格式命令
\RETURN
• 命令重命名
当然,如果不喜欢宏包中默认的命令,则可以使用以下latex命令将原有的默认命令进行重命名,
\renewcommand{\algorithmrequire}{\textbf{Input:}}
\renewcommand{\algorithmensure}{\textbf{Output:}}
按照以上两句代码重定义后,就可以用 "Input:" 和 "Output:" 来分别表示输入和输出了。
• for 循环的使用例子
∘ 例子, for 格式
\FOR {each $i \in [1,9]$}
\STATE initialize a tree $T_{i}$ with only a leaf (the root); \\
\STATE $T = T\bigcup $_{i};$ \\
\ENDFOR
∘ 例子2,forall 格式
\FORALL {forall 循环条件} \label{alg:code:tag:1}
\STATE forall 循环体算法伪代码行一 \label{alg:code:tag:2}
\STATE forall 循环体算法伪代码行二 \label{alg:code:tag:3}
\ENDFOR
• while 循环的使用例子
\WHILE {while循环条件}
\STATE while循环体算法伪代码行一
\STATE while 循环体算法伪代码行二
\ENDWHILE
• if
\IF {if条件描述}
\STATE if代码描述一
\STATE if代码描述二
\ENDIF
• if ... else ...
\IF {if条件描述}
\STATE if伪代码描述一
\STATE if伪代码描述二
\ELSE
\STATE else伪代码描述一
\STATE else伪代码描述二
\ENDIF
• if ... else if ...
\IF {if条件描述}
\STATE if伪代码描述
\ELSIF {elseif条件描述一}
\STATE elseif伪代码描述一
\ELSIF {elseif条件描述二}
\STATE elseif伪代码描述二
\ELSE
\STATE else伪代码描述
\ENDIF
• repeat until ,这里的条件描述,描述的是退出条件,也就是在条件满足时,循环退出
\REPEAT
\STATE 伪代码描述
\UNTIL {条件描述}
• ininite loops,无限循环,循环体中应该是具备退出条件的
\LOOP
\STATE 伪代码描述
\ENDLOOP
• 变量打印
\PRINT 打印内容描述
• 算法部分循环使用总结
∘ \IF {"condition"} "text" \ENDIF
∘ \IF {"condition"} "text" \ELSE "text" \ENDIF
∘ \IF {"condition"} "text" \ELSIF "text" \ELSIF "text" \ELSE "text" \ENDIF
∘ \FOR {"condition"} "text" \ENDFOR
∘ \FORALL {"condition"} "text" \ENDFOR
∘ \WHILE {"condition"} "text" \ENDWHILE
∘ \REPEAT "text" \UNTIL {"condition"}
∘ \LOOP "text" \ENDLOOP
参考:http://hustsxh.is-programmer.com/posts/38801.html
http://blog.sina.com.cn/s/blog_5a13c966010167fj.html
- latex插入伪代码
- Latex插入伪代码
- LaTeX/Algorithms 伪代码
- LaTeX写伪代码
- LaTeX/Algorithms 伪代码
- latex伪代码
- Latex 插入伪代码
- 用Latex写伪代码
- latex中插入伪代码
- 【转】LaTeX插入伪代码1
- 【转】LaTeX插入伪代码2
- 使用Latex编辑算法伪代码
- 比较好看的Latex 伪代码模板
- Latex写算法的伪代码排版
- Latex编辑算法伪代码示例
- Latex写算法的伪代码排版
- Latex写算法的伪代码排版
- LaTex 带边框逻辑清晰的伪代码
- css之position属性
- android 总结(1)
- 面试题<数组中的逆序对>(12)
- iOS开发之正则表达式
- 网络与通信:网络编程(概念)
- latex伪代码
- 【lr】Loadrunner11无法启动IE的解决办法
- 使用LeakCanary遇到的问题 就是不弹出来
- MySQL 5.6 my.cnf 参数说明
- 设置按钮等文本,得用[Button setTitleColor:textColor forState:UIControlStateNormal]
- Android根据包名启动应用
- Python学习1
- 面试中你必须要知道的语言陷阱
- android 倒计时 CountDownTimer