【LaTeX】LaTeX/Algorithms 伪代码

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例子

\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}

最后的排版结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41990278/article/details/109075389