Datenstrukturen und Algorithmen
Welche Zeitkomplexität hat bei einem Array mit n Elementen ein Verfahren, das jedes Paar zweier verschiedener Elemente genau einmal vergleicht (eine doppelte Schleife, die das i-te Element mit allen dahinterliegenden Elementen vergleicht und i schrittweise erhöht)?
- AO(n)
- BO(n log n)
- CO(n²)
Antwort und Erläuterung anzeigen
Antwort: C. O(n²)
Die Zahl der verglichenen Paare beträgt (n−1) + (n−2) + … + 1 = n(n−1)/2, also 45 bei n = 10 und 499.500 bei n = 1000. Die O-Notation beschreibt nur, wie der Aufwand bei großem n wächst; daher entfallen der Faktor 1/2 und der Term niedrigerer Ordnung, und es ergibt sich O(n²). Verdoppelt sich n, vervierfacht sich die Zahl der Vergleiche ungefähr. O(n) ist die Komplexität eines Verfahrens, das jedes Element einmal betrachtet, und O(n log n) die von Verfahren wie Mergesort, die die Daten wiederholt halbieren.