如何绘制数组(数据结构)并显示分区?

如何绘制数组(数据结构)并显示分区?

我正在做算法课的作业,我必须以类似于此图的方式展示快速排序算法的每个步骤中特定数组的样子:(来自 CLRS 书中的页面)。

阵列图像

我想知道如何绘制一个看起来像书中的数组。特别是,我想知道如何(按从最重要到最不重要的顺序)

  • 绘制一个数组。

  • 将字母放在节点或空白处上方。

  • 绘制划分数组的黑条。

  • 使用灰色或浅灰色自定义单元格。

答案1

也许像这样

在此处输入图片描述

\documentclass{article}

\usepackage{colortbl}
\makeatletter
\newcolumntype{W}{!{\smash{\vrule
\@width 4\arrayrulewidth
\@height\dimexpr\ht\@arstrutbox+2pt\relax
\@depth\dimexpr\dp\@arstrutbox+2pt\relax}}}
\makeatother
\definecolor{gray}{rgb}{.7,.7,.7}
\begin{document}

\begin{tabular}{|c|c|cWc|cWc|cWc|}
\multicolumn{1}{c}{$p$}&
\multicolumn{1}{c}{}&
\multicolumn{1}{c}{$i$}&
\multicolumn{1}{c}{}&
\multicolumn{1}{c}{}&
\multicolumn{1}{c}{$j$}&
\multicolumn{1}{c}{}&
\multicolumn{1}{c}{$r$}\\
\cellcolor{gray}2&
\cellcolor{gray}1&
\cellcolor{gray}3&
\cellcolor{black}&
\cellcolor{black}&
5&
6&
4
\end{tabular}

\end{document}

相关内容