mirror of
https://github.com/Estom/notes.git
synced 2026-04-24 02:21:45 +08:00
59 lines
2.2 KiB
TeX
59 lines
2.2 KiB
TeX
|
|
\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} |