二次算法的时间复杂度

时间:2014-01-25 12:31:11

标签: algorithm time-complexity

对于我的编程和算法设计考试,我必须熟悉时间复杂度和Big-Oh表示法。我理解其中的大部分内容,但后来我遇到了这个问题,我的解决方案似乎相当简单;但我不明白哪些步骤是必要的。有人可以澄清所采取的步骤吗?

练习:

  

处理时间为T(n)= cn ^ 2的二次算法花费T(N)秒来处理N个数据项。假设N = 100且T(N)= 1 ms,处理n = 3000个数据项将花费多少时间?

给出解决方案:

  

常数因子c = T(N)/(N ^ 2),因此T(n)= T(N)*(n ^ 2)/(N ^ 2)= n ^ 2/10000并且       T(3000)= 900毫秒

3 个答案:

答案 0 :(得分:3)

这是一个非常简单的数学问题:

如果T(n) = cn²T(100) = 1ms

T(100) = c * 100²
       = c * 10,000
       = 1ms

因此,解决c会产生:

c = (1/10,000)ms

然后可以使用它来计算T(3000)

T(3000) = (1/10,000)ms * 3,000²
        = (1/10,000)ms * 9,000,000
        = (9,000,000 / 10,000)ms
        = 900ms

答案 1 :(得分:1)

直截了当。您有N = 100T(N) = 1。所以c = T(N)/N^2 = 1/10000

然后你做T(3000) = 1/10000 * (3000 ^ 2) = 900

答案 2 :(得分:1)

这与Big-Oh符号甚至计算机科学没有任何关系。你需要的只是基本代数。鉴于某些c的T(n)= cn ^ 2,而T(100)= 0.001,那么什么是T(3000)?

    0.001 = T(100) = c (100*100) = 10000c
    c = 10^-7

    T(3000) = c n^2 = 10^-7 * 3000 * 3000 = 0.9