2013-06-29 63 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