En Python se puede obtener la intersección de dos conjuntos hacer:Intersección complejidad
>>> 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])
Alguien sabe la complejidad de esta intersección (&
) algoritmo?
EDITAR: Además, ¿alguien sabe cuál es la estructura de datos detrás de un conjunto de Python?
ese es el peor caso desagradable, ¿no? – juliomalegria
¡Me sorprendió también! ¿Tal vez se trate de tener diferentes tipos de datos mezclados en los dos conjuntos que se cruzan? –
Parece que primero no se usa un género (que * requiere que los objetos tengan un pedido *), sino que simplemente hace una "sonda hash": tal vez para un mejor 'C' y promedio (y * sin requisito de pedido *) La complejidad máxima requerida, AFAIK, es sobre 'O (n log n) + O (n)', con un ordenamiento. Sin embargo, Big-O es un límite superior y hay consideraciones prácticas, así que ... –