Die zeitliche Komplexität des festgelegten Schnittstellenbetriebs in Python hängt von der verwendeten Methode und der Größe der beteiligten Sätze ab. Hier ist eine Aufschlüsselung:
1. Verwenden des `&` Operators oder der Methode `intersection ()`:
* Durchschnittlicher Fall: O (min (len (set1), len (set2)))
* schlimmster Fall: O (n*m) wobei n die Länge eines Satzes und M ist die Länge des anderen, aber das ist sehr unwahrscheinlich.
Erläuterung:
* Pythons "set" wird mit einer Hash -Tabelle implementiert. Der Algorithmus iteriert im Wesentlichen den kleineren Satz und prüft, ob jedes Element im größeren Satz vorhanden ist. Der Operator "In" in einem Satz (Überprüfung der Mitgliedschaft) wird aufgrund der Hash -Tabellen -Suche im Durchschnitt O (1) übernommen.
* Wenn "set1" kleiner ist, iteriert es durch "set1" und führt eine Hash -Tabellen -Lookup in `set2` für jedes Element durch, was zu einer Komplexität von O (len (set1)) führt. Die gleiche Logik gilt, wenn `set2` kleiner ist.
* Der schlimmste Fall von O (N* m) würde auftreten, wenn Hash -Kollisionen weit verbreitet sind und die SET -Lookups von O (1) bis O (n) abbauen. Dies ist sehr ungewöhnlich mit Pythons guten Hashing -Algorithmen.
2. Verwenden der `intersection_update ()` `Methode (In-Place-Kreuzung):
* Durchschnittlicher Fall: O (len (set)), wobei die Menge der Satz ist, der aktualisiert wird.
* schlimmster Fall: Gleich wie "intersection ()` - unwahrscheinlich o (n*m)
Erläuterung:
`intersection_Update ()` `` den Satz, auf dem er aufgerufen wird, und Elemente entfernen, die in den anderen Sets nicht vorhanden sind. Die zeitliche Komplexität ähnelt "intersection ()", weil sie die Mitgliedschaft in den anderen Sets noch überprüfen muss.
Beispiel:
`` `Python
set1 ={1, 2, 3, 4, 5}
set2 ={3, 5, 6, 7, 8}
Kreuzung mit &Operator:
intersection_set =set1 &set2
print (intersection_set) # output:{3, 5}
Kreuzung unter Verwendung von Intersection () Methode:
intersection_set =set1.intersection (set2)
print (intersection_set) # output:{3, 5}
Kreuzung mit der Methode zwischensection_update () (modifiziert set1):
set1.intersection_update (set2)
print (set1) # output:{3, 5}
`` `
Zusammenfassungstabelle:
| Methode | Durchschnittliche Fallzeitkomplexität | Schlimmste Fallzeit Komplexität (unwahrscheinlich) |
| -------------------------- | -------------------------- | -------------------------------------- |
| `&` Operator | O (min (len (set1), len (set2)) | O (n*m) |
| `intersection ()` | O (min (len (set1), len (set2)) | O (n*m) |
| `intersection_update ()` | O (len (set)) | O (n*m) |
Key Takeaway: Der Set -Intersektionsbetrieb in Python ist dank der Verwendung von Hash -Tabellen im Allgemeinen sehr effizient. Sie können normalerweise annehmen, dass es für praktische Zwecke O (min (len (set1), len (set2)) ist.