Takze postupoval som takto.Nacital som si tie subory do dvoch poli na obidve som pouzil QuickSort.A rozdiel som chcel urobit takto :
Vezmem 1 prvok pola field1 , preskakujem ( vzostupne zoradene ) prvky pola filed2 pokial su menise ako prvy prvok pola field1.
Ak je 1. prvok field1 odlisny od akutalneho prcku field2 tak ho prida do rozdielu ..nizsie prvky field2 som preskocil a pretoze je field2 zoradene a prvy nepreskoceny je odlisny , musi byt aktualny vysii a dalsie este vyssie. V opacnom pripade si musia byt 1. prvok field1 a aktualny prvok field2 rovne. 1 prvok field1 nepatri do rozdielu.. atd atd .
tu je kod
Kód: Vybrať všetko
write.open(name);
int indexFile2 = -1;
int element;
for (int indexFile1 = 0; indexFile1 < SIZE; indexFile1++)
{
element = field1[indexFile1];
while ( (indexFile2 < SIZE - 1) && (field2[++indexFile2] < element) )
if ( indexFile2 >= SIZE - 1)
{
for ( int i = indexFile1; i < SIZE; i++)
write << field1[indexFile1] << endl;
break;
}
if ( element != field2[indexFile2])
write << element << endl;
}
Kód: Vybrať všetko
int middle;
//Binary search
middle = (left + right) / 2;
for(int i = 0; i < SIZE; i++){
while ((left <= right) && (field1[i] != field2[middle]))
{
if (field1[i] < field2[middle])
right = middle - 1;
else left = middle + 1;
middle = (left + right) / 2;
}
if (left > right)
output[i]=field1[i];
}