[英]Lexicographical Sorting of Word List
我需要按字典順序合並和排序 100,000 多個單詞的列表。 我目前使用稍微修改過的冒泡排序來完成它,但在 O(n^2) 時需要相當長的時間。 有沒有更快的算法來排序單詞列表? 我正在使用 Python,但如果有一種語言可以更好地處理這個問題,我願意接受建議。
使用內置的sort()
列表方法:
>>> words = [ 'baloney', 'aardvark' ]
>>> words.sort()
>>> print words
['aardvark', 'baloney']
它使用O(n lg(n))
排序1 , Timsort (我相信這是一種修改過的合並排序。它針對速度進行了高度調整。)。
1正如評論中所指出的,這里指的是元素比較的次數,而不是低級操作的次數。 由於本例中的元素是字符串,並且比較兩個字符串需要進行min{|S1|, |S2|}
個字符比較,因此總復雜度為O(n lg(n) * |S|)
其中|S|
是正在排序的最長字符串的長度。 然而,所有比較排序都是如此——真正的操作次數取決於被排序元素類型的元素比較 function 的成本。 由於所有比較排序都使用相同的比較 function,因此在相互比較這些排序的算法復雜性時,您可以忽略這一微妙之處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.