Digamos que tengo dos matrices:Algoritmo para encontrar si dos conjuntos se cruzan
int Arraya [] = {5, 17, 150, 230, 285};
int ArrayB [] = {7, 11, 57, 110, 230, 250};
Ambas matrices están ordenadas y pueden ser de cualquier tamaño. Estoy buscando un algoritmo eficiente para encontrar si los arrays contienen elementos duplicados entre ellos. Solo quiero una respuesta verdadera/falsa, no me importa qué elemento se comparte o cuántos.
La solución ingenua consiste en recorrer cada elemento en ArrayA, y hacer un binary search en ArrayB. Creo que esta complejidad es O (m * log n).
Debido a que ambos conjuntos se clasifican, parece que debe haber un algoritmo más eficiente.
También me gustaría una solución genérica que no asumen que las matrices tienen números (es decir, la solución debería funcionar también para cuerdas). Sin embargo, los operadores de comparación están bien definidos y ambas matrices están ordenadas de menor a mayor.
Sólo una nota, se dice que la complejidad de la solución que usted ha esbozado aquí es O (m * log n), donde my n son los tamaños de las dos matrices. –
Tenía la sensación de que era algo así. Gracias. – Imbue