In Python è possibile ottenere l'intersezione di due insiemi fare:Intersezione complessità
>>> s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s2 = {0, 3, 5, 6, 10}
>>> s1 & s2
set([3, 5, 6])
>>> s1.intersection(s2)
set([3, 5, 6])
Chiunque conosce la complessità di questo incrocio (&
) algoritmo?
MODIFICA: Inoltre, qualcuno sa qual è la struttura dati dietro un set Python?
che è un brutto caso peggiore, non è vero? – juliomalegria
Anch'io ne sono rimasto sorpreso! Forse è un problema di avere diversi tipi di dati mescolati nei due set che sono intersecati? –
Non sembra che usi prima un ordinamento (che * richiede che gli oggetti abbiano un ordinamento *), ma piuttosto fa un "hash probe": forse per un migliore 'C' e medio (e * nessun requisito di ordinamento *). La massima complessità richiesta, AFAIK, è circa 'O (n log n) + O (n)', con un ordinamento. Tuttavia, Big-O è un limite superiore e ci sono considerazioni pratiche quindi ... –