如何将算法写成表格中的一列

如何将算法写成表格中的一列

让我们考虑以下代码及其对应的算法

  \documentclass{article}
  \usepackage[utf8]{inputenc}
   \usepackage[]{algorithm2e}

   \begin{document}

   \begin{center}
   \begin{algorithm}[H]
    \KwData{this text}
    \KwResult{how to write algorithm with \LaTeX2e }
    initialization\;
    \While{not at end of this document}{
     read current\;
     \eIf{understand}{
             go to next section\;
      current section becomes this one\;
      }{
      go back to the beginning of current section\;
     }
    }
    \caption{How to write algorithms}
   \end{algorithm}
   \end{center}
   \end{document}

得出以下结论

在此处输入图片描述

我想将每个步骤的运行时间添加到我的算法中,如下所示(例如)

在此处输入图片描述

因此,我需要将我的算法作为表中的一列,并另外添加一列用于显示每个步骤的运行时间,我怎样才能将我的算法作为表中的一列呢?

答案1

我将使用tabularx以确保它适合文本列的整个宽度,因为您是水平添加信息:

在此处输入图片描述

\documentclass{article}

\usepackage{tabularx,amsmath}

\newenvironment{algorithm}
  {\renewcommand{\caption}[1]{\multicolumn{1}{@{} X}{\scshape ##1}}%
   \noindent
   \tabularx{\linewidth}{@{} >{\quad} X l l @{}}  
  }
  {\endtabularx}

\begin{document}

\begin{algorithm}
  \caption{Insertion-Sort($A$)}                      & \textit{cost} & \textit{times}             \\
  \textbf{for} $j = 2$ \textbf{to} $A.\text{length}$ & $c_1$         & $n$                        \\
  $k = A[j]$                                         & $c_2$         & $n - 1$                    \\
  \itshape // Insert $A[j]$ into the sorted                                                       \\
  \quad \itshape   sequence $A[1, \dots, j - 1]$.    & $0$           & $n - 1$                    \\
  $i = j - 1$                                        & $c_4$         & $n - 1$                    \\
  \textbf{while} $i > 0$ \textbf{and} $A[i] > k$     & $c_5$         & $\sum_{j = 2}^n t_j$       \\
  \quad $A[i + 1] = A[i]$                            & $c_6$         & $\sum_{j = 2}^n (t_j - 1)$ \\
  \quad $i = i - 1$                                  & $c_7$         & $\sum_{j = 2}^n (t_j - 1)$ \\
  $A[i + 1] = k$                                     & $c_8$         & $n - 1$
\end{algorithm}

\end{document}

我粗略地复制了预期的列输出。可以向该过程添加许多选项;这完全取决于您要设置多少个选项以及某些事情是否需要自动化。

相关内容