BubbleSort

Bublinkové třídění

 

Tento algoritmus je velmi pomalý v neuspořádaných polích, ale zato velmi efektivní v polích částečně uspořádaných. Postupně se systematicky porovnávají dvojice sousedních prvků a vyměňují se spolu vždy, když menší číslo následuje po větším. Po prvním průchodu FOR cyklem je zajištěno, že největší číslo je na konci pole. Druhý průchod už můžeme provádět jen ve zbytku pole. Po ukončení druhého průchodu jsou největší dvě čísla správně umístěna. Celý postup opakujeme až do uspořádání celého pole.

3
5
2
1
4
10
8
6
9
7
3
2
1
4
5
8
6
9
7
10
2
1
3
4
5
6
8
7
9
10
1
2
3
4
5
6
7
8
9
10

 

Neaktivní čísla

Přehazovaná čísla

Čísla jdoucí na konec

 

Takto vypadá Bubbletsort v Delphi

procedure BubbleSort(var P : TPoleCisel); // // uspořádá pole podle velikosti
var
i,j,pom : integer;
begin

for i := 0 to length(p)- 1 do //pro všechny prvky kromě posledního
for j := 0 to length(p)-i do //pro všechny prvky kromě největších na konci

if Pole[j] > Pole[j+1] then //pokud je větší číslo před menším

begin // tak je prohodí

pom := Pole[j+1];
Pole[j+1] := Pole[j];
Pole[j] := pom;

end;
end;