Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Pomocou operátora `&` alebo metóda `intersection ()`:
* Priemerný prípad: O (min (Len (set1), len (set2))))))))))
* Najhorší prípad: O (n*m), kde n je dĺžka jednej sady a m je dĺžka druhej, ale je to veľmi nepravdepodobné.
Vysvetlenie:
* Python's `Set` je implementovaný pomocou hashovej tabuľky. Algoritmus v podstate iteruje cez menšiu sadu a kontroluje, či je každý prvok prítomný vo väčšej sade. Operátor „in“ na sade (kontrola členstva) má v priemere O (1) v dôsledku vyhľadávania tabuľky hash.
* Preto, ak je `set1` menší, iteruje sa prostredníctvom` set1` a vykonáva vyhľadávanie tabuľky hash v `set2` pre každý prvok, čo vedie k zložitosti o (len (set1))). Rovnaká logika platí, ak je `set2` menší.
* Najhorší prípad O (n* m) by sa vyskytol, ak by hashové zrážky nekontrolovali a degradovali stanovené vyhľadávania z O (1) do O (n). To je veľmi nezvyčajné s Pythonovým dobrým algoritmom hashovania.
2. Pomocou metódy `intersection_update ()` (križovatka na mieste):
* Priemerný prípad: O (Len (set)), kde set je sada, ktorá bude aktualizovaná.
* Najhorší prípad: Rovnaké ako `priesečník ()` - nepravdepodobné O (n*m)
Vysvetlenie:
`intersection_update ()` Modifikuje súpravu, na ktorej sa volá, a odstraňuje prvky, ktoré nie sú prítomné v druhej sade. Časová zložitosť je podobná ako „priesečník ()“, pretože stále potrebuje skontrolovať členstvo v ostatných súboroch.
Príklad:
`` `Python
set1 ={1, 2, 3, 4, 5}
set2 ={3, 5, 6, 7, 8}
intersection_set =set1 &set2
tlač (intersection_set) # výstup:{3, 5}
intersection_set =set1.intersection (set2)
tlač (intersection_set) # výstup:{3, 5}
set1.intersection_update (set2)
tlač (set1) # výstup:{3, 5}
`` `
Súhrnná tabuľka:
| Metóda | Priemerná zložitosť času v prípade Zložitosť najhoršieho prípadu (nepravdepodobné)
| ---------------------------- | --------------------------------- | ------------------------------------- |
| `&` Prevádzkovateľ | O (min (Len (set1), len (set2))) | O (n*m) |
| `priesečník ()` | O (min (Len (set1), len (set2))) | O (n*m) |
| `intersection_update ()` | O (len (set)) | O (n*m) |
Kľúčové kroky: Prevádzka priesečníka v Pythone je vo všeobecnosti veľmi efektívna vďaka použitiu hashových tabuliek. Zvyčajne môžete predpokladať, že na praktické účely je O (min (len Set1), Len (set2)))).