0

例如我们的输入文件in.txt

naturalistic 10
coppering 20
artless 30

命令后:sort in.txt

artless 30
coppering 20
naturalistic 10

命令后:sort -n -k 2 in.txt

naturalistic 10
coppering 20
artless 30

我的问题:如何在按列排序时保持线条稳定。我希望整条线保持不变,而它的一般顺序正在改变?什么算法或代码片段有用?是关于文件读取或排序设施吗​​?

4

2 回答 2

2

标准 UNIXsort没有记录它使用哪种算法。它甚至可以根据输入的大小或排序选项等因素选择不同的算法。

关于排序算法的维基百科页面列出了许多可供您选择的排序算法。

如果你想要一个稳定的排序,有很多选项(同一个维基百科页面上的比较表列出了哪些是稳定的),但实际上任何排序算法都可以通过标记每个数据项在输入中的原始位置来稳定并根据该位置在键比较功能中打破平局。

除此之外,不清楚你在问什么。在您的问题中,您演示了使用sort和不使用-n-k选项,但不清楚为什么这会影响排序算法的实际选择......

于 2013-06-29T00:50:50.000 回答
0

我只需创建一个字符串的哈希表,其中 num 作为键,字符串作为值(我假设它们是唯一的),然后对于命令sort,我会根据值进行-n -k 2排序,我会根据键进行排序. POSIX 标准没有规定使用哪种算法,因此不同的 unix 风格可能使用不同的算法。GNU 排序使用合并排序 http://en.wikipedia.org/wiki/Merge_sort

于 2013-06-29T02:04:10.770 回答