meno: Michal Korbela škola: gymnázium J.J Bánovce nad Bebravou trieda: kvinta Príklad č.5 Program, aby nevykonal navyše žiadne kroky tak postupuje takto: Pri vstupe si zráta, koľko je krabíc s číslom 1, 2, 3. Potom začne kontrolovať čísla od 1 po a, kde a je počet krabíc s číslom 1. Ak namiesto 1 je dvojka, tak začne hľadať číslo 1 (toto číslo určite existuje, ale je niekde inde) najskôr medzi 2. (načo by hľadal toto číslo medzi 3 keby potom zas musel prehodiť 2 s 3). Ak sa nenájde toto číslo ani medzi 2, tak tak potom sa číslo začne hľadať medzi 3. Keď sa toto číslo nájde, či už medzi 2 alebo 3 tak sa to číslo, kde bola 1(buď medzi 2 alebo 3) prepíše na to číslo ktoré bolo namiesto 1. Číslo medzi jednotkami už nebudeme prepisovať. Načo!! aj tak ho už nepoužijeme. Vypíšu sa pozície čísel ktoré sa vymieňali. Ak namiesto 1 bude 3, tak sa bude hľadať najskôr medzi 3 a ak sa tam nenájdee, tak sa bude hľadať medzi 2). Potom sa vykoná to čo aj v prvej podmienke. Nájdná jednotka sa prepíše číslom ktoré blo namiesto 1). Vypíšu sa pozície čísel ktoré sa vymieňali. Keď sa už medzi 1 nenachádza žiadne idé číslo (prejde prvý cyklus) a nájde sa medzi dvojkami 3, tak toto číslo nemôžme nikde inde hľadať, len medzi 3. číslo sa prepíše číslom ktoré bolo namiesto 2. Vypíšu sa pozície čísel ktoré sa vymieňali. Časová zložitosť: O(2*pocet)+O(a*(b+c)+b*c) a,b,c sú počty 1,2,3 a počet je počet čísel(krabíc s mliekom) Pamäťová zložitosť: 1000b + 8k b - byte, i - integer