Třídění polí v Pascalu
(Bubble a Quick sort)

[o úroveň výše]

V následujícím příkladu se třídí pole se jménem "pole" Integer. Sami si jistě upravíte na setřízení strukturovaných polí a databází ...

Bubble sort s kontrolou setřízenosti Obyčejný Bubble sort komentáře
program bubblesort;

var
pole: array[1..20] of integer;
i: integer;
j: boolean;

Procedure Swap(var a,b:integer);
var temp:integer;
Begin
temp:=a;
a:=b;
b:=temp;
End;
BEGIN

program bubblesort;

var
pole: array[1..20] of integer;
i, j: integer;

Procedure Swap(var a,b:integer);
var temp:integer;
Begin
temp:=a;
a:=b;
b:=temp;
End;

BEGIN

definice proměnných
a procedury
přehazující dvě pole
randomize;
write('Neseřazené pole: ');
for i := 1 to 20 do
begin
pole[i] := random(99) + 1;
write(pole[i], ' ');
end;
writeln;
randomize;
write('Neseřazené pole: ');
for i := 1 to 20 do
  begin
   pole[i] := random(99) + 1;
   write(pole[i], ' ');
  end;
writeln;
vytvoření ukázkového
nesetřízeného pole
repeat
j:=true;
for i := 1 to 19 do
if pole[i] > pole[i+1] then
begin
Swap(pole[i], pole[i+1]);
j:=false;
end;
until j=true;
for i := 1 to 19 do
for j := i+1 to 20 do
if pole[i] > pole[j] then Swap(pole[i], pole[j]);
vlastní třízení ...

write('Seřazené pole: ');
for i := 1 to 20 do
write(pole[i], ' ');
writeln;

END.

write('Seřazené pole: ');
for i := 1 to 20 do
write(pole[i], ' ');
writeln;

END.

závěr

Metoda Quick Sort se dá napsat takto:

program Quick;

var
pole: array[1..20] of integer;
i, j, PIVOT: integer;

Procedure Swap(var a,b:integer);
var temp:integer;
Begin
temp:=a;
a:=b;
b:=temp;
End;

procedure quicksort(L, R: integer);
begin
if L < R then
begin
i := L + 1;
j := R;
PIVOT := pole[L];

repeat
while pole[i] <= PIVOT do inc(i);
while pole[j] > PIVOT do dec(j);
if i < j then Swap(pole[i],pole[j]);
until i > j;

pole[L] := pole[j];
pole[j] := PIVOT;

quicksort(L, j-1);
quicksort(i, R);
end;
end;

begin
randomize;

Writeln;
write('Neseřazené pole: ');
for i := 1 to 20 do
begin
pole[i] := random(99) + 1;
write(pole[i], ' ');
end;
Writeln;

quicksort(1, 20);

write('Seřazené pole: ');
for i := 1 to 20 do
write(pole[i], ' ');
end.

Jak můžete vidět, algoritmus si sám nastavuje hranice třídění a tím dosáhne toho, že ignoruje již setříděné části.

Další třídící algoritmy jsou uloženy v souboru sorting.zip (39 kB).

Pokud se soubor nestáhne, ale otevře v novém okně, budete si muset uložit odkaz jako soubor (z Microsoft Exploderu, nebo Netscape Navigatoru se klikne pravým tlačítkem a zvolí se správná volba z menu...) .


[o úroveň výše]


WEBovský počítadlo spočítalo, že si číslo počitadlo, které navštívilo od 17.října 1999 tyto stránky uložené na serveru Volny.cz
Tato stránka byla autorem naposledy editována 07.08.2007 13:27:24,
automatický update proveden 03.09.2007 22:23:44