您好,您能帮我为 arraysort 制作一个 MWE 吗?
我把 Arraysort 包文档中的代码放在了一个最小文档中:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{arrayjobx}
\usepackage{arraysort}
\begin{document}
\newarray{A}
\readarray{A}{78&4&85&1&28&6}
\sortArray{6}{A}
\A(1) \A(2) \A(3) \A(4) \A(5) \A(6)
\end{document}
它给出:
Package arraysort Error: Cannot sort by undefined comparator arraysortcomparestr.
谢谢
答案1
首先,不使用任何包进行冒泡排序。然后使用 读取数组listofitems
。
\documentclass{article}
%
% THIS CODE CAN \bubblesort A NUMBERED LIST
%
\def\listterminator{9999}% SET TO *ANY* VALUE KNOWN NOT TO BE IN LIST (POSITIVE OR NEGATIVE)
\newcommand\bubblesort[1]{\def\sortedlist{}\sortlist#1,\listterminator,\relax}
\def\sortlist#1,#2,#3\relax{%
\ifnum#2=\listterminator\relax%
\edef\sortedlist{\sortedlist#1}%
\else
\ifnum#1<#2\relax%
\edef\sortedlist{\sortedlist#1,}%
\sortlist#2,#3\relax%
\else%
\let\tmp\sortedlist%
\def\sortedlist{}%
\expandafter\sortlist\tmp#2,#1,#3\relax%
\fi%
\fi%
}
\usepackage{listofitems}
\begin{document}
Bubble Sort Demonstration:
\bubblesort{78,4,85,1,28,6}\sortedlist\par
\readlist*\A{\sortedlist}
Array spans \A[1] to \A[6]:
\foreachitem\z\in\A[]{\ifnum\zcnt=1 \else, \fi\z}
\end{document}
如果你的初始列表在 a 中\def
,那么你可以将其作为
\def\mylist{78,4,85,1,28,6}
\expandafter\bubblesort\expandafter{\mylist}
答案2
感谢 Ulrike Fischer 对文档的帮助。
我只需要补充
\usepackage[comparestr,comparenum,randompart]{arraysort}
在一开始的时候
阅读文档时我觉得还需要更多内容,但事实并非如此。