Je suis d'étudier pour un test et trouve cette question:
Je ne peux pas vraiment déterminer la complexité, j'ai compris, c'est soit O(n2) ou O(n3) et je me suis penchée vers O(n3).
Quelqu'un peut-il me dire ce que c'est et pourquoi?
Mon idée qu'il est O(n2) c'est parce que dans l' j
boucle, j = i
ce qui donne une forme de triangle, puis l' k
boucle va de i + 1
de j
, ce qui je pense est l'autre moitié de celle du triangle.
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;
}
Aussi, si vous pouvez me dire ce qu'il fait?
J'ai pensé qu'il retourne à l'addition de nombres entiers positifs ou le plus grand entier du tableau.
Mais pour les tableaux comme {99, -3, 0, 1}
il retourne 99
, ce qui, je pense, parce que c'est buggé. Si ce n'est pas que je n'ai aucune Idée de ce qu'il fait:
{99, 1} => returns 100
{-1, -2, -3} => return -1
{-1, 5, -2} => returns 5
{99, -3, 0, 1} => returns 99 ???