t d n n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Třídění PowerPoint Presentation
Download Presentation
Třídění

Loading in 2 Seconds...

play fullscreen
1 / 24

Třídění - PowerPoint PPT Presentation


  • 124 Views
  • Uploaded on

Třídění. Seminář IVT. Definice. uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší do nejmenší hodnoty klíče) příklady data žáků, pracovníků, … jistých osob dle příjmení a jména (podle abecedy) – kombinovaný klíč

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Třídění' - lovey


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
t d n

Třídění

Seminář IVT

definice
Definice
  • uspořádání skupiny dat (záznamů) dle daného klíče
    • vzestupně (od nejmenší do největší hodnoty klíče)
    • sestupně (od největší do nejmenší hodnoty klíče)
  • příklady
    • data žáků, pracovníků, … jistých osob dle
      • příjmení a jména (podle abecedy) – kombinovaný klíč
      • data narození
      • místa bydliště
    • knihy v knihovně dle
      • autora
      • žánru
druhy t d n
Druhy třídění
  • vnitřní
    • všechna tříděná data se vejdou do paměti
    • rychlost třídění závisí jen na počtu porovnání a výměn dat
  • vnější
    • data se do paměti nevejdou
    • třídí se po částech, setříděné části odkládají zpět do vnější paměti, pak se vše postupně slučuje
    • rychlost třídění závisí na počtu porovnání, výměn dat a přístupové rychlosti vnějších pamětí (disku)
metody
Metody
  • stabilní - zachovává vzájemné pořadí údajů se shodnými primárními klíči – tj. třídíme-li osoby dle příjmení a bude se vyskytovat více osob stejného příjmení, zachová se ve výsledku jejich pořadí dle původních dat
  • přirozená, pokud doba potřebná ke třídění již setříděné posloupnosti je menší než doba, potřebná pro setřídění náhodně uspořádané posloupnosti.
po adavky na algoritmus
Požadavky na algoritmus
  • jednoduchost
  • přirozenost
  • stabilita
  • časová složitost co možná nejmenší
  • paměťová náročnost
algoritmy s asovou slo itost o n 2
Algoritmy s časovou složitostí O(N2)

kvadratická složitost

  • Select Sort
  • Bubble Sort
  • Shaker Sort
  • Insert Sort

třídíme v původní poli, nepotřebujeme další pomocné pole

select sort
Select Sort

Třídění výběrem– opakovaný výběr největšího (nejmenšího) prvku z dosud nesetříděné posloupnosti a jeho přehození s posledním (prvním) prvkem

  • průchod polem – v n-prvkovém poli najdeme maximum a prohodíme tento prvek s posledním n-tým prvkem
  • průchod polem –v poli s (n-1) prvky opět najdeme maximum a prohodíme tento prvek s posledním tj. (n-1). prvkem
  • průchod polem –v poli s (n-2) prvky opět najdeme maximum a prohodíme tento prvek s posledním tj. (n-2). prvkem

pokračujeme, dokud nezbude jen jediný prvek – ten už je na svém místě

select sort1
Select Sort

Start

i = n, n-1 … 2

Stop

max = 1

j = 2, 3, … i

tmp = A[i]

A[i] = A[max]

-

A[j] > A[max]

A[max] = tmp

+

max = j

selectsort
SelectSort

procedure SelectSort ( var A: TPole ; N : word);

var

I, J, max : word;

tmp : TPrvek; {typ prvku pole}

begin

for I := N downto 2 dobegin

max := 1 ;

for J := 2 to I do begin

if A[J] > A[max] then

max := J

end;

tmp := A[I];

A[I] := A[max];

A[max] := tmp

end

end;

bubble sort
Bubble Sort

třídění probubláváním – porovnávají se vždy prvky ležící vedle sebe – je-li levý prvek větší než pravý, prohodí se

  • průchod polem– n-prvkové pole – porovná se první prvek s druhým, je-li první větší než druhý, prohodí se. Porovná se druhý se třetím (event. se prohodí), třetí se čtvrtým …Touto cestou se na pozici posledního tj n. prvku dostane největší prvek
  • průchod polem – (n-1) prvkové pole – opět se porovnává první s druhým, druhý s třetím atd. na pozici (n-1). prvku se dostane – probublá – 2. největší prvek

pokračujeme, dokud nezbude jen jediný prvek – ten už je na svém místě

Zkrácení algoritmu – kontrolujeme, zda došlo k výměně – pokud nikoliv, je celé pole setříděno!!!

bubble sort del verze
Bubble Sort – delší verze

Start

i = 1, 2 … n - 1

Stop

j = 1, 2, … n - i

-

A[j] > A[j + 1]

+

tmp = A[j]

A[j] = A[j+1]

A[j+1] = tmp

bubble sort1
Bubble Sort

procedure BubbleSort ( var A: TPole ; N : word);

var

I, J : word;

tmp : TPrvek;

begin

for I := 1 to N - 1 do

for J := 1 to N - i do

if A[J] > A[J+1] thenbegin

tmp := A[J];

A[J] := A[J+1];

A[J+1] := tmp

end;

end;

bubble sort zkr cen verze
Bubble Sort – zkrácená verze

Start

i = 1, 2 … n -1

Stop

vymena = false

j = 1, 2, … n - i

-

A[j] > A[j + 1]

+

-

vymena

Stop

tmp = A[j]

A[j] = A[j+1]

A[j+1] = tmp

+

vymena = true

bubble sort zkr cen verze1
Bubble Sort – zkrácená verze

procedure BubbleSort ( var A: TPole ; N : word);

var

I, J : word;

tmp : TPrvek;

vymena : boolean;

begin

for I := 1 to N - 1 do begin

vymena := false;

for J := 1 to N - i dobegin

if A[J] > A[J+1] thenbegin

vymena := true;

tmp := A[J];

A[J] := A[J+1];

A[J+1] := tmp

end;

end;

ifnot vymena thenbreak;

end;

end;

shaker sort
Shaker Sort

třídění setřásáním – podobné jako BUBBLE SORT, ale střídavě se

prochází oboustranně

  • průchod polem– zprava – porovná se poslední s předposledním, předposlední s předpředposledním …
  • průchod polem – zleva – porovnává se první s druhým, druhý s třetím atd.

nyní máme na prvním a posledním místě správné prvky – nejmenší a

největší

pokračujeme v poli s n-2 prvky

Zkrácení algoritmu – pamatujeme si, u jakého prvku došlo k výměně

shaker sort set s n
Shaker Sort – setřásání

Start

L=2

R = n

L = L+1

1

j = R, R-1, … L

j = L, L+1, … R

R = R - 1

-

A[j] < A[j - 1]

-

A[j] < A[j - 1]

L > R

-

+

+

1

+

tmp = A[j]

A[j] = A[j -1]

A[j -1] = tmp

tmp = A[j]

A[j] = A[j -1]

A[j -1] = tmp

Stop

shaker sort1
Shaker Sort

var

I, J , L, R : word;

tmp : TPrvek;

begin

L := 2;

R := N;

repeat

for J := R downto L do begin

if A[J-1] > A[J] thenbegin

tmp := A[J-1];

A [J-1] := A[J];

A[J] := tmp;

end;

end;

L := L+1;

for J := L to R do

if A[J-1] >A[J] thenbegin

tmp :=A[J-1];

A[J-1] := A[J];

A[J] := tmp;

end;

end;

R := R - 1;

until L > R

end;

shaker sort set s n zkr cen
Shaker Sort – setřásání zkráceně

Start

L=2

R = n

K = n

L = K+1

1

j = R, R-1, … L

j = L, L+1, … R

R = K - 1

-

A[j] < A[j - 1]

-

A[j] < A[j - 1]

L > R

-

+

+

1

+

tmp = A[j]

A[j] = A[j -1]

A[j - 1] = tmp

K = j

tmp = A[j]

A[j] = A[j - 1]

A[j -1] = tmp

K = j

Stop

shaker sort zkr cen
Shaker Sort - zkráceně

var

I, J , L, R, K : word;

tmp : TPrvek;

begin

L := 2;

R := N;

repeat

for J := R downto L do begin

if A[J-1] > A[J] thenbegin

tmp := A[J-1];

A [J-1] := A[J];

A[J] := tmp; K := J ;

end;

end;

L := K+1;

for J := L to R do

if A[J-1] >A[J] thenbegin

tmp :=A[J-1];

A[J-1] := A[J];

A[J] := tmp; K := J ;

end;

end;

R := K - 1;

until L > R

end;

insert sort
Insert Sort

třídění zatřiďováním – jednotlivé prvky se postupně

zatřiďují do již setříděné části pole

  • zatřiďování z pravého konce setříděného pole (se zarážkou – nárazníkem)
  • binární zatřiďování
insert sort1
Insert Sort

Start

i = 2, 3 … n

Stop

X = A[i]

A[0] = X

j = i - 1

X < A[j]

-

A[j+1] = X

+

A[j+1] = A[J]

j = j – 1

insert sort2
Insert Sort

procedureInsertSort ( var A: TPole ; N : word);

var

I,J : word;

X : TPrvek;

begin

for I := 2 to N dobegin

X := A[I];

A[0] := X;

J := I-1;

while X<A[J] dobegin

A[J+1] := A[J];

J := J-1

end;

A[J+1] := X

end

end;

binary insert sort
Binary Insert Sort

Start

i = 2, 3 … n

Stop

X = A[i]

j = i, i - 1 … L+1

L = 1

R = i – 1

A[j] = A[j-1]

M = int(L + R)/2

X < A[M]

-

A[L] =X

L = M + 1

+

R = M – 1

+

-

L >R

binary insert sort slo itost n log n
Binary Insert Sort - složitost n.log(n)

procedure BinaryInsertSort(var A : TPole ; N : word) ;

var

i, j, L, R, M: word;

X : TPrvek;

begin

for i := 2 to N dobegin

X := A[i];

L:= 1;

R:= i-1;

whileL <= Rdobegin

M:= (L + R) div 2;

if X < A[M] then

R:= M - 1

else

L:= M + 1;

end;

for j := idowntoL + 1do

A[j] := A[j - 1];

A[L] := X;

end

end;