我正在研究测试并发现了这个问题:
我无法确定复杂性,我认为它是O(n 2)或O(n 3)而我倾向于O(n 3).
有人能告诉我它是什么以及为什么?
我认为它是O(n 2)是因为在j循环中,j = i它给出了一个三角形的形状,然后k循环从i + 1到j,我认为是三角形的另一半.
public static int what(int[] arr)
{
int m = arr[0];
for (int i=0; i<arr.length; i++)
{
for (int j=i; j<arr.length;j++)
{
int s = arr[i];
for (int k=i+1; k<=j; k++)
s += arr[k];
if (s > m)
m = s;
}
}
return m;
}
Run Code Online (Sandbox Code Playgroud)
如果你能告诉我它的作用吗?
我想它返回正整数的加法或数组中的最大整数.
但对于像{99, -3, 0, 1}它这样的数组返回99 …
我正试图找到一种方法来测试一块C++代码运行需要多长时间.我用它来比较代码与不同的算法和不同的语言,所以理想情况下我想要一个秒/毫秒的时间.在Java中我使用的是这样的东西:
long startTime = System.currentTimeMillis();
function();
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
Run Code Online (Sandbox Code Playgroud)
有没有一种很好的方法来获得像C++那样的准确时间(或者我应该使用其他一些基准测试手段)?