Die akzeptierte Antwort ist zwar recht gut, berührt aber immer noch nicht den wahren Grund, warum O(n)=O(2n) .
Die Big-O-Notation beschreibt die Skalierbarkeit
Im Kern beschreibt die Big-O-Notation nicht, wie lange die Ausführung eines Algorithmus dauert. Es ist auch keine Beschreibung, wie viele Schritte, Codezeilen oder Vergleiche ein Algorithmus durchführt. Dies ist am nützlichsten, wenn beschrieben wird, wie ein Algorithmus mit der Anzahl der Eingaben skaliert.
Nehmen Sie zum Beispiel eine binäre Suche. Wie finden Sie bei einer sortierten Liste einen beliebigen Wert darin? Nun, Sie könnten in der Mitte beginnen. Da die Liste sortiert ist, gibt der mittlere Wert an, in welcher Hälfte der Liste sich Ihr Zielwert befindet. Die Liste, die Sie durchsuchen müssen, wird nun in zwei Hälften geteilt. Dies kann rekursiv angewendet werden und dann in die Mitte der neuen Liste usw. verschoben werden, bis die Listengröße 1 beträgt und Sie Ihren Wert gefunden haben (oder er in der Liste nicht vorhanden ist). Durch Verdoppeln der Größe der Liste wird dem Algorithmus nur ein zusätzlicher Schritt hinzugefügt, bei dem es sich um eine logarithmische Beziehung handelt. Somit ist dieser Algorithmus O(logn). Der Logarithmus ist Basis 2, aber das spielt keine Rolle - der Kern der Beziehung besteht darin, dass das Multiplizieren der Liste mit einem konstanten Wert der Zeit nur einen konstanten Wert hinzufügt.
Vergleichen Sie eine Standardsuche mit einer unsortierten Liste. In diesem Fall können Sie nur nach einem Wert suchen, indem Sie jeden einzelnen überprüfen. Das schlimmste Szenario (was Big-O speziell impliziert) ist, dass Ihr Wert ganz am Ende steht, was bedeutet, dass Sie für eine Liste der Größe nn Werte überprüfen müssen . Durch Verdoppeln der Größe der Liste wird die Anzahl der Überprüfungen verdoppelt. Dies ist eine lineare Beziehung. O(n) . Aber selbst wenn Sie zwei Operationen für jeden Wert ausführen müssten, bleibt die lineare Beziehung bei einigen Verarbeitungsvorgängen bestehen. O(2n) ist als Deskriptor einfach nicht nützlich, da es genau die gleiche Skalierbarkeit wie O beschreiben würdeO(n) .
Ich weiß zu schätzen, dass viele dieser Antworten Sie grundsätzlich dazu auffordern, selbst zu diesem Schluss zu kommen, indem Sie die Definition von Big-O lesen. Aber dieses intuitive Verständnis hat eine ganze Weile gedauert, bis ich meinen Kopf umwickelt habe, und deshalb habe ich es Ihnen so klar wie möglich dargelegt.