Ver Mensaje Individual
  #8  
Antiguo 23-12-2008
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Algoritmo para comparar dos listas de valores
Las listas pueden ser en tablas, listas, cualquier cosa, lo unico que hay que hacer es adecuar el código al caso que proceda.A saber, si es una lista aumentar en uno el contador y si es una tabla leer el siguiente registro.

Importante: Las listas deben estar ordenadas por el mismo valor, que es el que se compara

Código Delphi [-]
1.- Poner las listas en su primer elemento
2.- Comparar los elementos
    A.- Son iguales ? El valor leido está en las dos listas
                           Actuar en consecuencia.
                           Coger los siguientes valores de las dos listas.

    B.- el valor de la lista 1 es menor? El valor de la lista 1 sólo se encuentra en la primera lista.
                                                  Actuar en consecuencia.
                                                  coger el elemento siguiente de la primera lista
    C.- el valor de la lista 2 es menor? El valor de la lista 2 sólo se encuentra en la segunda lista.
                                                  Actuar en consecuencia.
                                                  coger el elemento siguiente de la segunda lista
    D.- Si no se han acabado las listas, Volver a iterar el punto 2
    E.- Si se ha acabado alguna de las listas ,iterar leyendo siempre de la que no ha acabado. Se actúa como si la que no ha acabado es menor el valor.
3.- Ya está

Este procedimiento asegura un par de cosas.
1.- Se tratan todos los elementos.
2.- Se optimiza al máximo los accesos, ya que sólo se lee una vez cada elemento de las listas.

Este procedimiento seguro que lo conocen aquellos que han trabajado con ficheros secuenciales, es decir, los mayores de 38/40 años, ya que se utilizaba a menudo en programas cobol con ficheros secuenciales. Yo los hacía con lápiz y papel, que en definitiva, es como mejor se aprende.De primero de informática de los años 70-80.
CONCLUSIÓN: Si los elementos son iguales, se lee de las dos listas. Si son distintos, siempre se lee de la lista del elemento menor.

Un pequeño juego de ensayo quizás ayude a comprenderlo

Código SQL [-]
Lista1      Lista2
1            1      
2            3
4            5
5            6
6
Iteraciones
1 - 1 -> Iguales se leen las dos listas
2 - 3 -> menor el de la lista 1, el 2 no está en la lista 2, se lee de la lista 1.
4 - 3 -> menor el de la lista 2, el 3 no está en la lista 1. leo de la lista 2
4 - 5 -> menor el de la lista 1, el 4 no está en la lista 2, leo de la lista 1
5 - 5 -> iguales, el 5 está en las dos listas, se lee de las dos listas
6 - 6 -> iguales, el 6 está en las dos listas, se lee de las dos listas
FIN

Espero que os sea de ayuda

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita