Menu

  • Aktuality
  • Lietanie
  • Elektrotechnika
    • AVR procesory
    • Rôzne zapojenia
    • Chémia a DPS
  • Programovanie
    • C# .NET
    • AVR GCC
    • Delphi
    • C/C++
  • Konštrukcie
  • DVB-T Brezno
  • Portfolio a kontakt

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;

in-page-blade(geshi-syntax-highlighter)

Doplňujúce info

© Chefo 2012