我在应用程序中实现了密码学和隐写术算法,想对这些算法进行时间复杂度评估。我不知道应该如何执行这些测试。
有没有我可以应用的测试框架或如何进行这些测试?
最佳答案
for (int i=0; i<N; ++i)
{
// Some constant time operation happens here
for (int j=0; j<N; ++j)
{
// Some constant time operation happens here
}
// Some constant time operation happens here
}
这个循环将在 O(N) + O(N2) = O(N + N2) = O(N2) 时间,因为循环的外部恒定时间部分在 O(N) 时间内执行,而内部部分在 O(N)*O(N) = O(N2 ).
如果您使用递归,事情就更难分析了,但它归结为同一件事……计算代码的恒定时间部分被执行了多少次。建议您阅读一本关于算法分析的书(This one 几乎是该主题的标准),这将帮助您了解如何最好地分析其他算法。
关于c# - 时间复杂度评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883205/