0. Die grundlegenden Eigenschaften des Algorithmus
0. Es gibt 0 oder mehr Eingaben.
1. Es gibt 1 oder mehr Ausgaben.
2. Die vom Algorithmus ausgeführten Schritte sind unendlich.
3. Die Bedeutung der bei jedem Schritt ausgeführten Sätze ist eindeutig.
4. Die Entwurfsidee des Algorithmus muss machbar sein
1. Der Algorithmus wird anhand der Zeitkomplexität "Big O" gemessen,
da die Ausführungszeit jeder Maschine immer unterschiedlich ist, die Anzahl der Ausführungskosten jedoch ungefähr gleich ist. Um dieses ungefähr gleiche Konzept zu messen, führen wir die Zeitkomplexität ein. Die Zeitkomplexität umfasst die optimale Zeitkomplexität, die schlechteste Zeitkomplexität und die durchschnittliche Zeitkomplexität. Im Allgemeinen wird zuerst die Worst-Case-Komplexität untersucht (die Reihenfolge der Daten ist ungeordnet).
Sequentielle Struktur --- Komplexitätsaddition
Schleifenstruktur --- Komplexitätsmultiplikation
Zweigstruktur --- Komplexität im schlimmsten Fall in der Verzweigung,
ignorieren Sie den konstanten Term (O (1))
2. Gemeinsamer konstanter Term für Zeitkomplexität und Größenvergleich
-------- O (1)
linearer Term -------- O (N)
quadratischer Term --------- O ( N²)
kubischer Term --------- O (N³)
logarithmischer Term --------- O (logN)
Exponentialterm --------- O (a ^ N)
NlogN ---------- O (NlogN)
3.timeit misst die Zeitkomplexität von Python-Code
timeit misst die Zeit
from timeit import Timer
def t1():
l1 = []
for i in range(1000):
l1.append(i)
text_time1 = Timer("t1", "from __main__ import t1")
print("append_time:{}".format(text_time1.timeit(1000)))
append_time:1.3199999999990997e-05
4.timeit misst die Komplexität der Liste