Ich lese diesen Beitrag auf Big-O.
Es heißt, dass der folgende Code O (n ^ 2) ist:
bool ContainsDuplicates(String[] strings)
{
for(int i = 0; i < strings.Length; i++)
{
for(int j = 0; j < strings.Length; j++)
{
if(i == j) // Don't compare with self
{
continue;
}
if(strings[i] == strings[j])
{
return true;
}
}
}
return false;
}
Aber ich kann nicht verstehen warum.
Die innere Schleife macht etwas Konstantes.
Es ist also die Summe von 1 .... N einer Konstanten. dh konstante Zahl O (1).
Die äußere Schleife ist eine Summation über dem O (1).
Ich würde mir also vorstellen, dass es n * O (1) ist.
Ich glaube, ich verstehe hier etwas falsch.
Ich glaube nicht, dass alle verschachtelten Schleifen O (n ^ 2) bedeuten, oder?
i+1
statt beginnt 0
. Wie geschrieben, sind im schlimmsten Fall (keine Dupes) 1/2 die Vergleiche redundant.
O(N)
, dieser Code tatsächlich O(N^2 * M)
dort ist , wo M die Länge der Zeichenfolgen ist.