java - 是否有编程方式或 eclipse 插件来计算 java 方法的大 O 符号

标签 java algorithm eclipse-plugin big-o asymptotic-complexity

<分区>

是否有编程方式或 eclipse 插件来计算 java 方法的大 O 符号?

最佳答案

不,没有这样的插件,如果有,那也只是一个近似值。也就是说,即使确定程序是否会完成运行也很棘手 - 参见 Halting problem .

现在,关于可能的近似值。假设您有一个插件可以使用小型数据集(例如 N = 1000)和中型数据集(例如 N = 10000)测试您的程序。如果你的程序在中型数据集上的运行时间是小型数据集的 10 倍,插件应该得出你的程序是 O(N) 的结论,对吗?不完全的。最好/平均/最坏情况如何?例如,快速排序的最坏情况是O(N^2),但它通常被认为是O(N*logN)排序算法。因此,如果插件命中了特殊输入,就会给出错误的结果。常量呢?运行时间为O(N + k*logN)的程序被认为是O(N),但是如果常数k足够大与N相比,plugin无法得出这个结论等

关于您的评论:

If anybody tried codility challenges they are evaluation your solution against performance using big O notation , and I'm sure that they are not calculation it manually, that's why I'm asking this question.

Codility 挑战的作者以众所周知的时间复杂度(他们手动分析)解决了他们的问题。当他们测量您的解决方案针对各种输入的运行时间并将其与他们针对相同输入的解决方案的运行时间进行比较时,他们可以自动确定您的程序的时间复杂度(当然,考虑到考虑您选择的编程语言和测量时间的某些偏差)。

关于java - 是否有编程方式或 eclipse 插件来计算 java 方法的大 O 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420564/

相关文章:

java - Eclipse插件 "Operation not enabled"

c - 如何知道路径,错误和警告存储在eclipse中

java - @Transactional 不会在数据库中生成 INSERT

c# - 如何将双重递归方法转换为循环?

algorithm - 设计一个实时保持前k个频繁词的系统

javascript - 从多个对象中找到最接近的 x 属性值之和

SWT 颜色选择器小部件

java - 如何调用传递给 JNI `jobject` 的 Java 对象的子类/子类的方法

java - 无法在java应用程序中运行mysql查询

java - Java中可变参数方法的性能