【问题标题】:Efficiency in word counting字数统计的效率
【发布时间】:2015-06-27 13:22:18
【问题描述】:

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

目前,我想到了一个快速排序的版本,但这意味着我的单词在被计算后必须已经放在一个数组中。在处理输入时,静态数组会立即使搜索操作的时间复杂度为 O(n) - 所以我正在考虑利用另一种结构(例如平衡二叉树)来进行处理,然后将其转换为数组。

我的想法是否正确,或者将树变成数组会损害我的效率?有什么建议吗?

谢谢

【问题讨论】:

    标签: performance sorting tree quicksort word


    【解决方案1】:

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

    您可能想查看此链接why-is-quicksort-better-than-other-sorting-algorithms-in-practice

    【讨论】:

    • 我无法打开该链接,但我确实了解快速排序在实践时通常如何更好地工作,以及如何将其与插入排序一起使用。我在使用该算法时面临的唯一问题是,我需要将作为输入接收的单词放入一个数组中并访问它们以在每次它们出现在输入中时增加它们的计数,而仅这些访问就会让我拥有在我进入排序部分之前的 O(n) 时间性能......我正在研究一些类似树的选项
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多