Im Allgemeinen verwenden wir die Big-O-Notation nur, wenn n zu übermäßig großen Werten ansteigen kann, da die Big-O-Notation beschreibt, wie die Ausführungszeit mit zunehmender Eingabe zunimmt. Wenn Sie beispielsweise eine Liste sortieren, werden die meisten der besten Algorithmen sortiert. Dies O(n log n)
bedeutet und bedeutet nur , dass die Zeit, die zum Sortieren der Liste benötigt wird, proportional ist, wenn die Liste lang genug ist n log n
. Wenn die Liste nicht lang genug ist, werden andere Faktoren (z. B. die Zeit, die Ihr Algorithmus benötigt, um zusätzlichen Speicherplatz zuzuweisen) von Bedeutung und können möglicherweise sogar die Laufzeit übernehmen.
Mit JavaScript-Zeichenfolgen n
kann in der Tat beliebig groß werden *, daher sagen wir, dass der Vergleich O(n)
Zeit braucht . Bei JavaScript-Zahlen ( Gleitkommazahlen mit doppelter Genauigkeit nach IEEE 754 ) n
beträgt die maximale Obergrenze 64 - 1 für ein Vorzeichenbit, 11 für einen Exponenten und 53 für signifikante Ziffern **. Aus diesem Grund wissen wir genau, wie lange es möglicherweise dauern wird, bis ein Zahlenvergleich durchgeführt wird, und die besten Systeme zum Vergleichen von Zahlen dieser exakten Größe laufen mehr oder weniger gleich, unabhängig davon, wie viele dieser 64 Stellen tatsächlich jede Zahl tatsächlich sind hat - daher wird ein Vergleich dieser Zahlen in JavaScript in Betracht gezogen O(1)
.
* Technisch gesehen gibt es eine Obergrenze, da der Arbeitsspeicher knapp werden kann. Die Sprache gibt jedoch keine maximale Größe für Zeichenfolgen an, und der O(n)
Teil des Zeichenfolgenvergleichs dominiert die Ausführungszeit, lange bevor dies geschieht.
** Dies bedeutet übrigens, dass die Zahlen in JavaScript nicht unendlich steigen können. Ab einem bestimmten Punkt werfen sie kleinere Ziffern weg (zum Beispiel können Zahlen über 2 ^ 53 nur gerade sein und Zahlen über 2 ^ 54 können nur durch 4 teilbar sein), und wenn die Zahl groß genug wird, wird sie aufgerundet zur Unendlichkeit. Wenn Sie dagegen eine Zahl immer wieder teilen, um sie unendlich klein zu machen, wird sie schließlich auf Null abgerundet.
2
zum Beispiel nicht3
. Das ist es. Ähnlich123
ist es nicht124
. Eine Zeichenfolge ist eine Sammlung von Zeichen, die"abc"
sich von unterscheidet,"abd"
aber Sie müssen jedes Zeichen überprüfen.