Dnes sme na hodine robili viacpáskové usporiadanie, ktoré sa používa, ak máme viac súborov(polí) ktoré už sú usporiadané a chceme ich usporiadať do jedného poľa, už usporiadaného. Vtedy vezmeme sa prvý prvok z poľa a a prvý prvok z poľa b, zistíme ktorý je menší, a ten vložíme na začiatok poľa c. Podľa toho z ktorého poľa bol ten prvok, ktorý sme vložili do poľa c, tak z neho potiahneme ďalší prvok, a znova ho porovnáme s tým prvkom, ktorý ta ostal. Takto to robíme, až kým nedôjdeme na koniec oboch polí a aj b.
***
program pasky;
uses Crt;
var a : array [1..1000] of integer;
b : array [1..1000] of integer;
c : array [1..1000] of integer;
i,j,k,M,N,p : integer;
vymena : boolean;
begin
Clrscr;
randomize;
write('Zadaj pocet prvkov prveho pola: ');
readln(M);
write('Zadaj pocet prvkov druheho pola: ');
readln(N);
for i:=1 to M do a[i]:=random(100);
for i:=1 to N do b[i]:=random(100);
a[M+1]:=999;
b[N+1]:=999;
repeat
vymena:=false;
for i:=1 to M-1 do
if a[i] > a[i+1] then
begin
p:=a[i]; a[i]:=a[i+1]; a[i+1]:=p;
vymena:=true;
end;
until vymena=false;
writeln;
writeln('Prve pole: ');
for i:=1 to M do write(a[i],' ');
repeat
vymena:=false;
for i:=1 to N-1 do
if b[i] > b[i+1] then
begin
p:=b[i]; b[i]:=b[i+1]; b[i+1]:=p;
vymena:=true;
end;
until vymena=false;
writeln; writeln;
writeln('Druhe pole je: ');
for i:=1 to N do write(b[i],' ');
i:=1; j:=1; k:=1;
repeat
if a[i]<=b[j] then begin c[k]:=a[i]; i:=i+1; k:=k+1; end
else begin c[k]:=b[j]; j:=j+1; k:=k+1; end;
until (a[i]=999) AND (b[j]=999);
writeln; writeln;
writeln('Usporiadane pole je: ');
for i:=1 to M+N do
write(c[i],' ');
readln;
end.
***
Tento program je tu.
Aplikácia je tu.
Tento program pracoval na princípe: vygeneroval si 2 polia a a b, zadanej dĺžky. Potom ich vylepšenou bublinou usporiadal. A potom cyklom repeat-until, robil to, čo je napísané na začiatku. Vzal prvok z poľa a aj z poľa b, a porovnal ich, potom ten menší dal do poľa c, potom vzal ďalší prvok z toho poľa odkiaľ bol ten vložený, a zase ho porovnal s tým prvkom čo tam ostal...
—————