让我们考虑以下代码及其对应的算法
\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}
我粗略地复制了预期的列输出。可以向该过程添加许多选项;这完全取决于您要设置多少个选项以及某些事情是否需要自动化。