LaTeX algorithm + algorithmic 伪代码命令速查表

专业相关2026年3月24日发布 芮和
319 150
4,703字
20–30 分钟

自用速查表,AI 生成。

🏗️ 基础结构

\usepackage{algorithm}      % 算法浮动环境
\usepackage{algorithmic}    % <a class="external" href="https://ray-or.com/tag/pseudo-code" title="查看与 伪代码 相关的文章" target="_blank">伪代码</a>环境

\begin{algorithm}[htbp]     % 浮动位置控制
\caption{算法标题}
\label{alg:label}
\begin{algorithmic}[1]      % [1] 显示行号
    % 伪代码内容
\end{algorithmic}
\end{algorithm}
Code language: TeX (tex)

📌 环境参数

参数说明示例
[h]此处(here)\begin{algorithm}[h]
[t]顶部(top)\begin{algorithm}[t]
[b]底部(bottom)\begin{algorithm}[b]
[p]独立页(page)\begin{algorithm}[p]
[H]强制此处(需 float 宏包)\begin{algorithm}[H]
[1]每行显示行号\begin{algorithmic}[1]
[2]每2行显示行号\begin{algorithmic}[2]
[]不显示行号\begin{algorithmic}

🔑 核心命令分类

1️⃣ 输入输出声明

命令效果说明
\REQUIRE{}Input: 内容前置条件/输入
\ENSURE{}Output: 内容后置条件/输出
\REQUIRE{数组 $A[1..n]$,目标值 $target$}
\ENSURE{目标值索引或 -1}Code language: TeX (tex)

2️⃣ 语句命令

命令效果说明
\STATE{}语句内容普通语句(带行号)
\STATEx{}语句内容普通语句(不带行号)
\STATE{$left \gets 1$}
\STATEX{\COMMENT{初始化}}Code language: TeX (tex)

3️⃣ 条件判断

命令效果说明
\IF{}\ENDIFif 条件 thenend if单分支
\IF{}\ELSE\ENDIFifelseend if双分支
\IF{}\ELSIF{}\ELSE\ENDIFifelsifelseend if多分支
\IF{$A[mid] = target$}
    \RETURN{$mid$}
\ELSIF{$A[mid] < target$}
    \STATE{$left \gets mid + 1$}
\ELSE
    \STATE{$right \gets mid - 1$}
\ENDIF
Code language: TeX (tex)

4️⃣ 循环结构

命令效果说明
\FOR{}\ENDFORfordoend forfor 循环
\WHILE{}\ENDWHILEwhiledoend whilewhile 循环
\REPEAT\UNTIL{}repeatuntil 条件repeat-until 循环
\LOOP\ENDLOOPloopend loop无限循环
\FOR{$i \gets 1$ \TO $n$}
    \STATE{处理 $A[i]$}
\ENDFOR

\WHILE{$left \leq right$}
    \STATE{继续搜索}
\ENDWHILE

\REPEAT
    \STATE{执行操作}
\UNTIL{$condition = true$}
Code language: TeX (tex)

5️⃣ 函数/过程

命令效果说明
\FUNCTION{名称}{参数}\ENDFUNCTIONfunction 名称(参数) … end function函数定义
\PROCEDURE{名称}{参数}\ENDPROCEDUREprocedure 名称(参数) … end procedure过程定义
\RETURN{}return 内容返回值
\CALL{名称}{参数}call 名称(参数)调用函数
\FUNCTION{GCD}{$a, b$}
    \IF{$b = 0$}
        \RETURN{$a$}
    \ELSE
        \RETURN{\CALL{GCD}{$b, a \mod b$}}
    \ENDIF
\ENDFUNCTION
Code language: TeX (tex)

6️⃣ 注释与逻辑

命令效果说明
\COMMENT{}$\triangleright$ 注释内容行内注释
\ANDand逻辑与
\ORor逻辑或
\NOTnot逻辑非
\TRUEtrue真值
\FALSEfalse假值
\IF{$x > 0$ \AND $x < 10$}
    \STATE{有效范围} \COMMENT{检查边界}
\ENDIF

\STATE{$flag \gets \TRUE$}
Code language: TeX (tex)

🎨 完整示例模板

二分查找

\begin{algorithm}[htbp]
\caption{二分查找算法}
\label{alg:binarysearch}
\begin{algorithmic}[1]
\REQUIRE{有序数组 $A[1..n]$,目标值 $target$}
\ENSURE{目标值索引或 -1}
\STATE{$left \gets 1$, $right \gets n$}
\WHILE{$left \leq right$}
    \STATE{$mid \gets \lfloor (left + right) / 2 \rfloor$}
    \IF{$A[mid] = target$}
        \RETURN{$mid$}
    \ELSIF{$A[mid] < target$}
        \STATE{$left \gets mid + 1$}
    \ELSE
        \STATE{$right \gets mid - 1$}
    \ENDIF
\ENDWHILE
\RETURN{$-1$}
\end{algorithmic}
\end{algorithm}
Code language: TeX (tex)

快速排序

\begin{algorithm}[htbp]
\caption{快速排序算法}
\label{alg:quicksort}
\begin{algorithmic}[1]
\REQUIRE{数组 $A[1..n]$}
\ENSURE{排序后的数组}
\IF{$n \leq 1$}
    \RETURN{$A$}
\ENDIF
\STATE{选择 pivot $p \gets A[n/2]$}
\STATE{初始化 $left \gets [], right \gets []$}
\FOR{$i \gets 1$ \TO $n$}
    \IF{$A[i] < p$}
        \STATE{$left$.append($A[i]$)}
    \ELSE
        \STATE{$right$.append($A[i]$)}
    \ENDIF
\ENDFOR
\RETURN{QuickSort($left$) + $p$ + QuickSort($right$)}
\end{algorithmic}
\end{algorithm}
Code language: TeX (tex)

带注释的算法

\begin{algorithm}[htbp]
\caption{计算阶乘}
\label{alg:factorial}
\begin{algorithmic}[1]
\REQUIRE{非负整数 $n$}
\ENSURE{$n!$ 的值}
\STATE{$result \gets 1$} \COMMENT{初始化结果}
\FOR{$i \gets 1$ \TO $n$}
    \STATE{$result \gets result \times i$} \COMMENT{累乘}
\ENDFOR
\RETURN{$result$}
\end{algorithmic}
\end{algorithm}
Code language: TeX (tex)

🎯 常用数学符号

符号LaTeX 代码用途
\gets\gets赋值
\leq\leq小于等于
\geq\geq大于等于
\neq\neq不等于
\lfloor\quad\rfloor\lfloor \rfloor向下取整
\lceil\quad\rceil\lceil \rceil向上取整
×\times\times乘法
÷\div\div除法
mod\bmod\mod \bmod \pmod取模
\emptyset\emptyset空集
\in\in属于
\cup\cup并集
\cap\cap交集

🎨 自定义样式

修改关键字

\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\renewcommand{\algorithmicif}{\textbf{if}}
\renewcommand{\algorithmicthen}{\textbf{then}}
\renewcommand{\algorithmicelse}{\textbf{else}}
\renewcommand{\algorithmicendif}{\textbf{end if}}
\renewcommand{\algorithmicfor}{\textbf{for}}
\renewcommand{\algorithmicendfor}{\textbf{end for}}
\renewcommand{\algorithmicwhile}{\textbf{while}}
\renewcommand{\algorithmicendwhile}{\textbf{end while}}
\renewcommand{\algorithmicreturn}{\textbf{return}}
Code language: TeX (tex)

添加颜色

\usepackage{xcolor}
\renewcommand{\algorithmicrequire}{\textcolor{blue}{\textbf{Input:}}}
\renewcommand{\algorithmicensure}{\textcolor{blue}{\textbf{Output:}}}
Code language: TeX (tex)

修改行号样式

\algrenewcommand{\algorithmiclineno}[1]{\textcolor{gray}{#1:}}Code language: TeX (tex)

⚠️ 注意事项

问题解决
关键字必须全大写\IF\FOR\WHILE
需要编译两次引用才能正确显示
中文需要额外宏包\usepackage{ctex}
标签放在 caption 后\caption{} 后加 \label{}
避免与 algorithm2e 混用会产生命令冲突
浮动位置不对[htbp][H]

📊 一页速查

algorithm + algorithmic 速查表


环境:\begin{algorithm}[htbp] … \end{algorithm}
代码:\begin{algorithmic}[1] … \end{algorithmic}

输入输出:\REQUIRE{} \ENSURE{}
语句:\STATE{} \STATEx{}
条件:\IF{} … \ELSIF{} … \ELSE{} … \ENDIF
循环:\FOR{}…\ENDFOR \WHILE{}…\ENDWHILE
函数:\FUNCTION{}{} … \ENDFUNCTION
返回:\RETURN{} \CALL{}{}
注释:\COMMENT{}
逻辑:\AND \OR \NOT \TRUE \FALSE

引用:\ref{alg:label} \pageref{alg:label}
赋值:$\gets$
比较:$\leq$ $\geq$ $\neq$


✅ 最小可用模板

\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{ctex}

\begin{document}

\begin{algorithm}[htbp]
\caption{算法名称}
\label{alg:example}
\begin{algorithmic}[1]
\REQUIRE{输入}
\ENSURE{输出}
\STATE{语句}
\IF{条件}
    \STATE{成立}
\ELSE
    \STATE{不成立}
\ENDIF
\FOR{循环}
    \STATE{循环体}
\ENDFOR
\RETURN{结果}
\end{algorithmic}
\end{algorithm}

\end{document}
Code language: TeX (tex)

💡 提示:关键字必须全大写,编译需要两次,中文需要 ctex 宏包!

© 版权声明

相关文章

15 条评论

  • 凌霄
    凌霄 读者

    速查表格式整理得蛮清楚

    中国河南
    回复
  • 永夜之瞳
    永夜之瞳 读者

    数学符号那部分帮大忙了

    中国上海
    回复
  • 韵染山河
    韵染山河 读者

    原来IF和FOR要大写啊,之前一直报错

    印度
    回复
    • 玉衡公子
      玉衡公子 读者

      我也被大小写坑过

      中国浙江@ 韵染山河
      回复
  • 橡皮糖
    橡皮糖 读者

    刚好在写算法作业,有用!

    中国贵州
    回复
  • 暴走的小熊
    暴走的小熊 读者

    REQUIRE和ENSURE原来是这么用的

    英国
    回复
  • 狻猊吞焰
    狻猊吞焰 读者

    自定义样式那段挺实用的

    印度
    回复
  • 丽丽
    丽丽 读者

    这表格排版挺清晰的,收藏了

    德国
    回复
  • 极光旅者
    极光旅者 读者

    原来行号参数是方括号里的数字

    中国上海
    回复
    • 夜灵回响
      夜灵回响 读者

      之前我也没注意到这个

      中国北京@ 极光旅者
      回复
  • 夜雾守护
    夜雾守护 读者

    写论文刚好卡这儿,太及时了

    中国福建
    回复
  • 旧书堆
    旧书堆 读者

    正好要用,mark了

    美国
    回复
    • 血瞳老妖
      血瞳老妖 读者

      同款操作,我也存了

      中国广东@ 旧书堆
      回复
  • 烟波叟
    烟波叟 游客

    这速查表救我命了,刚写论文卡在algorithmic语法😭

    中国广东
    回复