Performance 字数计算的效率

Performance 字数计算的效率,performance,sorting,tree,quicksort,word,Performance,Sorting,Tree,Quicksort,Word,我的任务是开发一个简单的文本分析器,它接收行作为输入,计算词频,然后按出现次数和字母顺序打印单词。我想让它尽可能节省时间和空间,并试图找出什么样的数据结构将是最好的,与哪个排序算法相结合 现在,我脑子里有一个版本的quicksort,但这意味着我的单词必须在被计数后已经被放入数组中。在处理输入时,静态数组会立即使搜索操作的时间复杂度为O(n)——因此我考虑利用另一种结构(如平衡二叉树)进行处理,然后将其转换为数组 我的想法正确吗,还是将一棵树变成一个数组会损害我的效率?有什么建议吗 谢谢Mafa

我的任务是开发一个简单的文本分析器,它接收行作为输入,计算词频,然后按出现次数和字母顺序打印单词。我想让它尽可能节省时间和空间,并试图找出什么样的数据结构将是最好的,与哪个排序算法相结合

现在,我脑子里有一个版本的quicksort,但这意味着我的单词必须在被计数后已经被放入数组中。在处理输入时,静态数组会立即使搜索操作的时间复杂度为O(n)——因此我考虑利用另一种结构(如平衡二叉树)进行处理,然后将其转换为数组

我的想法正确吗,还是将一棵树变成一个数组会损害我的效率?有什么建议吗


谢谢

Mafalda,例如,您可以将插入排序与快速排序结合使用。 快速排序可能是最好的方法


您可能希望检查此链接

假设您选择的编程语言相对高效,那么使用从FSM填充的字母树(不是二叉树-扇出应该是字符集的大小)来存储计数可能是成本最低的解决方案。

我无法打开该链接,但我确实了解快速排序在实践中通常如何更好地工作,以及如何将其与插入排序结合使用。使用该算法时我面临的唯一问题是,我需要将作为输入接收的单词放入一个数组中,每次它们出现在输入中时访问它们以增加它们的计数,而这些访问本身将使我在到达排序部分之前具有O(n)时间性能。。。我在看一些类似树的选项