[英]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.