微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查找给定时间复杂度的最大输入数据

如何解决查找给定时间复杂度的最大输入数据

一个算法需要 0.5 毫秒来处理 100 个输入数据。 求算法时间复杂度为一分钟的最大输入数据

O(nlogn)

解决方法

遵循 OP 的评论

n^n = 2^(12*10^6)

它来自: 0.5/6000 = log2(100^100)/log2(n^n)

n^n - 10^12000000 视为等式 [1]

n Equation [1] 结果是.. 下一个 n 应该是..
100 -ve ( 更大
1000000 -ve 更大
10000000 +ve smaller
平均值(10^6,10^7)=5500000 +ve 较小
平均值(10^6,550000)=3250000 +ve 较小
平均值(10^6,325000)=2125000 +ve 较小
平均值(10^6,212500)=1562500 -ve 更大
平均值(212500,1562500)=1843750 -ve 更大
平均值(212500,1847500)=1984375 +ve 较小
1914062.5 +ve smaller
1878906.25 -ve 更大
1896484.375 -ve 更大
1905273.438 -ve 更大
1909667.969 -ve 更大
1911865.234 +ve 较小
1910766.602 +ve 较小
1910217.285 -ve 更大
1910491.943 +ve 较小
1910354.614 -ve 更大
1910423.279 -ve 更大
1910457.611 -ve 更大
1910474.777 -ve 更大
1910483.36 +ve 较小
1910479.069 -ve 更大
1910481.215 +ve 较小
1910480.142 -ve 更大
1910480.678 +ve 较小
1910480.41 -ve 更大

在第二行,我尝试 100000 因为 100 (有 2 个 '0's) 导致 10^200 (指数处有 2 个 '0's) 。因此,尝试 1000000(带有 6 个 0)似乎是公平的 12000000(带有 2 个 0)。由于 n 应该更大,我在第三行尝试 10^7。

但在第 4 行及以上,逻辑是在先前确定的边界内找到更大/更小的数字..

我在 1910480.41 处停止,迭代已经振荡。因此计算出的答案是1910480

如果我们要测试1910480是否适合..继续上面的迭代,直到差异(Equation [1])/准确度满足最终用户。

如果有什么需要澄清的,请询问。

p/s:如果时间复杂度为 O(n),则删除(编辑)的答案是正确的。顺便说一句,上述方法执行某种Bisection Method

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。