【问题标题】:Big O analysis of sorting each string in an array of strings, and then sorting that array of stringBig O 分析对字符串数组中的每个字符串进行排序,然后对该字符串数组进行排序
【发布时间】:2016-11-11 10:39:33
【问题描述】:

我一直在阅读《Cracking the Coding Interview》,对于作者对特定示例的解释,我有点困惑。在书中,作者解释说我们有一个字符串数组(这些数组是我编的,书上没有出现):

["abc", "a", "dcglkjsl"];

这个算法的第一个任务是对每个字符串进行排序,留下:

["abc","a","cdgjklls"];

然后对原始数组进行排序,如下所示:

["a", "abc", "cdgjklls"];

现在,作者继续对算法进行部分分析,得到O(a * s(log a + log s))的解,其中a是数组的长度,s是数组的长度最长的字符串。

为什么排序每个单独字符串的复杂度为 O(s log s)?我似乎无法解决这个问题。作者说这是一个明显的结论,但我不明白为什么。我觉得如果我理解了这个关键的信息,我将能够理解作者是如何得出上述最终解决方案的。

【问题讨论】:

    标签: arrays string algorithm sorting


    【解决方案1】:

    为什么排序每个单独字符串的复杂度为 O(s log s)?

    如果您选择std:mapbalanced Binary Search Tree 来填充字符串的每个字符,则需要O(s log s) 来填充地图或BST。 log s 是树的深度。

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 2013-03-23
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多