Hallo Freunde,
ich verwende in einem Programm einen Alg. zum Vergleich zweier Listen, der mir die Unterschiede wiederum in 2 Listen zurückgibt.
Diesen habe ich von einem Kollegen genannt bekommen, er funktioniert auch einwandfrei, ich benötige jedoch den Namen, da ich diesen in einer schriftlichen Arbeit erwähnen möchte.
Prinzipielle Funktionsweise:
Es gibt 2 Listen a und b. Diese enthalten sortierte Werte der Menge M. Es gilt: M ist die Vereinigung von a und b. M wird nicht verändert, es können lediglich Werte von a nach b, bzw. von b nach a verschoben werden.
Und genau dies ist das Gefragte:
Welche Werte waren vorher nicht in a bzw. wurden von a nach b verschoben?
Legende:
- a und b sind sortierte Listen von Integer-Werten
- anhand von aPos und bPos wird jeweils bis zu den Enden (aSize und bSize) der Listen gewandert
- die in a eingefügten Werte werden in einer Liste inserted aufgenommen
- die in a gelöschten Werte werden in einer Liste deleted aufgenommen
Kleines Beispiel:
M = {1,2,3,4,5,6,7,8,9}
a = {1,2,3,4,5,6}
b = {7,8,9}
Nach Verschieben von Elementen:
a = {1,2,3,7,8}
b = {4,5,6,9}
=> inserted = {7,8}
=> deleted = {4,5,6}
while( 1 )
{
if( posa Append( aa );
posa++;
}
else if( aa \> bb )
{
inserted-\>Append( bb );
posb++;
}
}
else if( aa == -1 )
{
// Rest von b an inserted hängen
while( posb Append( b[posb] );
posb++;
}
break;
}
else if( bb == -1 )
{
// Rest von a an deleted hängen
while( posa Append( a[posa] );
posa++;
}
break;
}
else
break;
}
Ich bin dankbar, wenn mir jemand den Namen dieses Alg. veraten kann.
Ciao, Bill