【问题标题】:Complexity of sorting a string array对字符串数组进行排序的复杂性
【发布时间】:2019-07-17 01:29:28
【问题描述】:

假设我们有一个字符串数组 str = ["foo", "bar", "zebras", "topper"] 我需要对其进行排序以获得 ["bar", "foo", "zebra", " top"],排序复杂度将为 O(nlogn),其中 n 是数组的长度。但我们也进行字符串比较,它应该是 O(m),其中 m 是最长字符串的长度(例如 zebras 和 topper)。所以最终的复杂度应该是 O(m * nlogn)。如果我错了,请纠正我。

这个问题与here 不同,因为这里我将所有字符串与所有字符串进行比较,而不是一个固定字符串。

【问题讨论】:

    标签: sorting time-complexity


    【解决方案1】:

    如果您只使用普通字符串比较执行排序,这是您会得到的结果。

    通过知道您的输入是字符串,您可以获得更好的性能(但我现在没有任何实现)。例如,如果您依次按每个字符对字符串进行排序,则得到 O(nm|alphabet|)。

    【讨论】:

    • 所以假设我只使用了普通的字符串比较,我是否正确。 ?
    • 是的,你是。通常排序的复杂性用比较(和交换)的数量来表示,所以如果你的比较是 O(m) (因为它们是),那么排序是 O(mnlog(n ))
    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 2016-07-18
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多