Ordenar archivos. Con enteros de longitud fija se puede hacer en tiempo O (n):
- Obtenga una parte del archivo, ordénelo con ordenar por radix, escriba en el archivo temporal. Repita hasta que todos los datos hayan terminado. Esta parte es O (n)
- Combina partes clasificadas. Esto es O (n) también. Incluso puede saltear números repetidos.
En los archivos ordenados, busque un subconjunto común de enteros: compare los números, anótelos si son iguales, luego avance un número en el archivo con un número más pequeño. Esto es O (n).
Todas las operaciones son O (n) y el algoritmo final es O (n) también.
EDITAR: método de mapa de bits es mucho más rápido si tiene suficiente memoria para mapas de bits. Este método funciona para cualquier número entero de tamaño fijo, de 64 bits, por ejemplo. El mapa de bits de tamaño 2^31 Mb no será práctico durante al menos unos años :)
¿Están ordenados? –
no .. números aleatorios –
¿Qué tamaño entero? – harold