【问题标题】:Time complexity of number base conversion数基转换的时间复杂度
【发布时间】:2015-12-17 01:56:23
【问题描述】:

problem 8.3-4的答案:

  1. 8.3-4(来自 CLRS)展示如何在 O(n) 时间内对 0 到 n^2 − 1 范围内的 n 个整数进行排序。

答案:

首先需要 O(n) 时间将整数转换为 2 位数字 基数 n ....

假设我们可以在O(n) 时间将n 0 到n^2-1 范围内的整数转换为基本n
这怎么可能?

是否每次转换都需要 O(log(n)) 时间,因此对于 n 次转换,时间应该是 O(nlogn) 而不是 O(n) ?

【问题讨论】:

    标签: algorithm performance sorting big-o time-complexity


    【解决方案1】:

    我假设作者的意思是每个整数运算都是在O(1)时间完成的,所以将一个数字转换为基数n基本上是最高有效位:x/n,租用有效位:x%n,这在上面假设是在恒定时间内完成的。

    如果没有给定的假设,每个数字都需要log(n^2)=2log(n)位来表示,所以只读取输入会花费O(nlogn)时间,所以需要这个假设来满足时间要求。

    【讨论】:

    • 我猜这个想法是我们得到的最大整数是 n^3 所以最坏的情况时间是 O(1) 因为我们知道我们只需要找到 3 个数字,所以我们可以为所有数字声明恒定时间。
    • @DeepankarArya 问题是关于 n^2-1,而不是 n^3-1。这同样适用于 3 位数的 n^3-1。
    • 实际上,在 CLRS 3r ed 中,他们将其更改为 n^3,但无论如何在这里都没关系。我猜任何 n^k,其中 k 是一个已知常数,都会起作用。
    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 2015-04-09
    • 2017-05-28
    • 2020-12-12
    • 2014-05-24
    • 1970-01-01
    • 2019-05-07
    • 2016-02-13
    相关资源
    最近更新 更多