Ich bin ziemlich neu zu Komplexität Maßnahmen, bitte ertragen mit.Algorithmus Komplexität - Erklärung von O (log n)?
Ich verstehe die folgende Komplexität Beispiele:
O (n) - Linear Time
Beispiel:
std::vector<int> MyV={1,4,6,2,9};
std::for_each(MyV.begin(), MyV.end(), [](int e1, int e1){return e1<e2;});
//I.e. n of operations based on the number of elements
O (1) - Konstante Zeit
Beispiel:
for(int i=5; i--;)
{
//Do Stuff
}
//i.e. n of operations will be 5
O (n2) - Quadratic Zeit
Beispiel:
std::vector<int> MyVec_A={1,2,3,4,5};
std::vector<int> MyVec_B={1,2,3};
for(int i=MyVec_A; i--;)
{
for(int x=MyVec_B; x--;)
{
//Do Stuff
}
}
Ist das obige Beispiel korrekt?
Wenn nicht, könnten Sie mir einige Hinweise geben, wie ich die Beispiele korrigieren kann?
Ich bin auch unsicher, Logarithmische Zeit O (log n), ein Beispiel wäre wirklich hilfreich?
Ist das falsch beschriftet? Sieht aus wie C++, aber Sie haben ein Haskell-Tag. Beachten Sie auch, dass in 'for' Schleifen die increment-Anweisung nicht mit einem Semikolon beendet werden muss.' (Int i = 5; i--) ... 'statt' für (int i = 5; i- -;) ' – Alec
@Alec nach dem neuesten Clang Compiler, der; ist erforderlich für diese umgekehrte Schleife im Gegensatz zu: für (int 1 = 0; 1
Oh ja. Ich habe die Tatsache vermisst, dass du in der Pause warst. :) Wie bei O (log n) ist die binäre Suche in einem sortierten Vektor O (log n). – Alec