Řazení údajů ------------ Řazení = uspořádání údajů podle velikosti (existuje relace úplného uspořádání na množině dat) [Třídění = rozdělení množiny dat na části (rozklad množiny)] Přímé metody = realizace základního principu; Modifikované metody = "zlepšení" principu in situ = prostorová složitost je dána vstupními daty stabilita metody = data se stejnými klíči se nepřeskupují přímé řazení / nepřímé řazení = přeskupují / nepřeskupují se řazené údaje. Metody: - výběrové - vkládací - rozdělovací - slučovací Charakter metod: - přirozené: jsou schopny využít částečně seřazených dat - podle časové složitosti lineární, složené logaritmické, kvadratické, horší Předpoklad: Pole P, obsazeno prvních N indexů, data jsou porovnatelná Výběrové metody: ---------------- Přímý výběr (Straight Selection) -------------------------------- procedure Zamena(var P:Pole; A,B: Indexy); var Pom: Slozka; begin Pom:=P[A]; P[A]:=P[B]; P[B]:=Pom end; function Extrem(P:Pole;A,B:indexy):Indexy; var V,I:Indexy; begin V:=A; for I:=A+1 to B do if P[I]P[I+1] then begin Zamena(P, I, I+1); Jeste:=true end; inc(J) end; Přirozená, sekvenční, stabilní, implementační jednoduchost, časová složitost kvadratická. Řazení hromadou (Heap Sort) --------------------------- procedure Sift(L,R:Index); var I,J: Index; Pom:Prvek; Jeste:Boolean; begin I:=L; J:=I*2; Pom:=P[I]; Jeste:=J<=R; while Jeste do begin if Jps inorder procedure Vloz(var S:UkUzel; D:Prvek); begin if S=nil then begin new(S); S^.Data:=D; S^.Vlevo:=nil; S^.vpravo:=nil end else if DX do Dec(J); if I<=J then begin Zamena(P,I,J); Inc(I); Dec(J) end until I>J end; begin Rozdel; if L