Rozidel mnozin – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rozidel mnozin  – C / C++ – Fórum – Programujte.comRozidel mnozin – C / C++ – Fórum – Programujte.com

 

sejnt0
Duch
21. 5. 2010   #1
-
0
-

Zdravim takze mam dve polia o velkosti milion prvkov ..zotriedil som ich vzostupne pomocou QuickSortu a mam urobit ich rozdiel a ten nasledne zapisat do suboru ..este tam nemam algoritmus na odstranenie duplicit ale aj tak mi to tam este vypisuje nejake cisla navyse a neviem si stym rady . dik za pomoc.
Alogoritmus by som popisal takto

Vezmu 1. prvek 1pola , preskakuji (serazene) prvky 2 pola dokud jsou mensi nez 1. prvek 1 pola.
Je-li 1. prvek 1pola odlisny od aktualniho prvku 2 pola , pak patri do rozdilu . V opacnem pripade si musi byt 1. prvek 1 pola aktualni prvek 2 pola rovny - 1. prvek 1pola tedy nepatri do rozdilu.

urobil som to takto



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;
}

Nahlásit jako SPAM
IP: 195.39.122.–
liborb
~ Redaktor
+18
Guru
21. 5. 2010   #2
-
0
-

Asi ti neporadím to, co chceš slyšet, ale na tuto úlohu se mi osvědčil binární strom (pokud se rozdílem nemyslí něco jiného). Nesetříděné hodnoty vkládáš do stromu, stejné hodnoty znovu neukládáš. Tím se jich elegantně zbavíš. Následně první strom procházíš inorder a zjišťuješ, jestli není v tom druhém stromu. Když není, tak ukládáš do souboru. Tam dostaneš rozdíl množin v setříděném stavu.

Nahlásit jako SPAM
IP: 195.189.143.–
liborb
~ Redaktor
+18
Guru
21. 5. 2010   #3
-
0
-

Asi ti neporadím to, co chceš slyšet, ale na tuto úlohu se mi osvědčil binární strom (pokud se rozdílem nemyslí něco jiného). Nesetříděné hodnoty vkládáš do stromu, stejné hodnoty znovu neukládáš. Tím se jich elegantně zbavíš. Následně první strom procházíš inorder a zjišťuješ, jestli není v tom druhém stromu. Když není, tak ukládáš do souboru. Tam dostaneš rozdíl množin v setříděném stavu.

Nahlásit jako SPAM
IP: 195.189.143.–
Petr
~ Anonymní uživatel
746 příspěvků
22. 5. 2010   #4
-
0
-

Také jsem zkoušel řešit tuto úlohu. Jednu množinu jsem uložil do binárního vyhledávacího stromu, druhou pouze do pole, které jsem pomocí QuickSort setřídil a následně v něm vyhledával pomocí půlení intervalu a strom jsem procházel in-orderem. Bylo to celkem rychlé.

Nahlásit jako SPAM
IP: 78.80.225.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 54 hostů

Podobná vlákna

Operace množin — založil kareln

Reprezntace množin — založil miklel

Průnik dvou množin — založil vasek230

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý