2013-06-29 130 views
0

例如我们的输入文件in.txt工作方式类似Unix的:算法排序

naturalistic 10 
coppering 20 
artless 30 

命令后:排序in.txt

artless 30 
coppering 20 
naturalistic 10 

命令后:排序-n -k 2 in.txt

naturalistic 10 
coppering 20 
artless 30 

我的问题:如何根据列进行排序时如何管理保持行稳定。 我想整条线保持不变,而它的顺序一般在变化? 什么算法或代码片是有用的?是关于文件阅读还是分类设施?

回答

2

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

Wikipedia page on sorting algorithms列出了许多可供您选择的排序算法。

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

除此之外,它不完全清楚你在问什么。在你的问题你演示如何使用的sort与不-n-k选择,但为什么这应该影响排序算法的实际选择,目前还不清楚......

+1

+1对于同情但信息丰富和有帮助的答案。祝你们好运! – shellter

0

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