Menu
Triedenie pretriasaním - shaker sort
Triedenie pretriasaním je jedno znajjednoduchších triedení, vychádzajúce z triedenia bublinkovým spôsobom. Vylepšenie vychádza z obojsmerného prechádzania triedenej množiny.
Kód:
const maximum=150; var pole : array[1..maximum] of integer; pole2 : array[1..maximum] of integer; {triedenie pretriasanim (obojsmerne bublinkove) } procedure ShakerSort; var k, l, r, pom, i, j: integer; begin l := 2; {minimum} r := maximum; {maximalny index prvku} k := maximum; repeat {opakuj kym si neporovnal vsetky prvky} for j := r downto l do {zacni s triedenim nadol} if pole2[j-1] > pole2[j] then {porovnavat susedne prvky smerom dole} begin pom := pole2[j-1]; {ziskaj vacsiu hodnotu} pole2[j-1] := pole2[j]; {presun sem mensiu hodnotu} pole2[j] := pom; {do prvku s vyssim indexom presun vyssi prvok} k := j; {zmensuj maximum ulozene v k} end; l := k + 1; {do minima daj zmensene maximum K a pripocitaj 1} for j := l to r do {pokracuj v triedeni nahor} if pole2[j-1] > pole2[j] then {tu sa opakuje predchadzajuce len v opacnom poradi} begin pom := pole2[j-1]; {tu sa opakuje predchadzajuce len v opacnom poradi} pole2[j-1] := pole2[j]; pole2[j] := pom; k := j; {tu sa opakuje predchadzajuce len v opacnom poradi} end; r := k - 1; {do r prirad maximalny testovany prvok zmenseny o 1} until l > r; {pokial neplati ze minimum je viac ako max} end;
Doplňujúce info