Triedenie výmenou: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 173: Riadok 173:
 
|1.||5||3||1||2||7||'''4'''||začiatok.
 
|1.||5||3||1||2||7||'''4'''||začiatok.
 
|-
 
|-
|2.||5||3||1||2||style="background-color:yellow"|'''4'''||style="background-color:yellow"|7||zámena
+
|2.||5||3||1||2||style="background-color:yellow"|'''4'''||style="background-color:yellow"|7||zámena, smer vľavo
 
|-
 
|-
|3.||5||3||1||'''2'''||4||7||porovnanie
+
|3.||5||3||1||'''2'''||4||7||porovnanie, smer vľavo
 
|-
 
|-
|4.||5||3||'''1'''||2||4||7||porovnanie
+
|4.||5||3||'''1'''||2||4||7||porovnanie, smer vľavo
 
|-
 
|-
|5.||5||style="background-color:yellow"|'''1'''||style="background-color:yellow"|3||2||4||7||zámena
+
|5.||5||style="background-color:yellow"|'''1'''||style="background-color:yellow"|3||2||4||7||zámena, smer vľavo
 
|-
 
|-
|6.||style="background-color:yellow"|'''1'''||style="background-color:yellow"|5||3||2||4||7||zámena
+
|6.||style="background-color:yellow"|'''1'''||style="background-color:yellow"|5||3||2||4||7||zámena, smer vľavo
 
|-
 
|-
|7.||style="background-color:lightgreen"|1||'''5'''||3||2||4||7||zámena
+
|7.||style="background-color:lightgreen"|1||'''5'''||3||2||4||7||porovnanie, smer vpravo
 
|-
 
|-
|8.||style="background-color:lightgreen"|1||style="background-color:yellow"|3||style="background-color:yellow"|'''5'''||2||4||7||zámena
+
|8.||style="background-color:lightgreen"|1||style="background-color:yellow"|3||style="background-color:yellow"|'''5'''||2||4||7||zámena, smer vpravo
 
|-
 
|-
|9.||style="background-color:lightgreen"|1||3||style="background-color:yellow"|2||style="background-color:yellow"|'''5'''||4||7||zámena
+
|9.||style="background-color:lightgreen"|1||3||style="background-color:yellow"|2||style="background-color:yellow"|'''5'''||4||7||zámena, smer vpravo
 
|-
 
|-
|10.||style="background-color:lightgreen"|1||3||2||style="background-color:yellow"|4||style="background-color:yellow"|'''5'''||7||zámena
+
|10.||style="background-color:lightgreen"|1||3||2||style="background-color:yellow"|4||style="background-color:yellow"|'''5'''||7||zámena, smer vpravo
 
|-
 
|-
|11.||style="background-color:lightgreen"|1||3||2||4||5||'''7'''||zámena
+
|11.||style="background-color:lightgreen"|1||3||2||4||5||'''7'''||porovnanie, smer vpravo
 
|-
 
|-
|12.||style="background-color:lightgreen"|1||3||2||4||'''5'''||style="background-color:lightgreen"|7||zámena
+
|12.||style="background-color:lightgreen"|1||3||2||4||'''5'''||style="background-color:lightgreen"|7||porovnanie, smer vľavo
 
|-
 
|-
|13.||style="background-color:lightgreen"|1||3||2||'''4'''||5||style="background-color:lightgreen"|7||zámena
+
|13.||style="background-color:lightgreen"|1||3||2||'''4'''||5||style="background-color:lightgreen"|7||porovnanie, smer vľavo
 
|-
 
|-
|14.||style="background-color:lightgreen"|1||3||'''2'''||4||5||style="background-color:lightgreen"|7||zámena
+
|14.||style="background-color:lightgreen"|1||3||'''2'''||4||5||style="background-color:lightgreen"|7||porovnanie, smer vľavo
 
|-
 
|-
|15.||style="background-color:lightgreen"|1||style="background-color:yellow"|'''2'''||style="background-color:yellow"|3||4||5||style="background-color:lightgreen"|7||zámena
+
|15.||style="background-color:lightgreen"|1||style="background-color:yellow"|'''2'''||style="background-color:yellow"|3||4||5||style="background-color:lightgreen"|7||zámena, smer vľavo
 
|-
 
|-
|16.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||'''3'''||4||5||style="background-color:lightgreen"|7||zámena
+
|16.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||'''3'''||4||5||style="background-color:lightgreen"|7||porovnanie, smer vpravo
 
|-
 
|-
|17.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||'''4'''||5||style="background-color:lightgreen"|7||zámena
+
|17.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||'''4'''||5||style="background-color:lightgreen"|7||porovnanie, smer vpravo
 
|-
 
|-
|18.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||4||'''5'''||style="background-color:lightgreen"|7||zámena
+
|18.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||4||'''5'''||style="background-color:lightgreen"|7||porovnanie, smer vpravo
 
|-
 
|-
|19.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||'''4'''||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||zámena
+
|19.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||3||'''4'''||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||porovnanie, smer vľavo
 
|-
 
|-
|20.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|'''3'''||4||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||zámena
+
|20.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|'''3'''||4||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||porovnanie, smer vľavo
 
|-
 
|-
|21.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||zámena
+
|21.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||style="background-color:lightgreen"|5||style="background-color:lightgreen"|7||koniec
 
|}
 
|}
 +
 
=Odkazy=
 
=Odkazy=
 
<references/>
 
<references/>

Verzia zo dňa a času 22:52, 22. február 2010

Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.


Bubble sort

Tabuľka 1 - Bubble sort
iterácia p[0] p[1] p[2] p[3] p[4] p[5] operácia
1. 5 3 1 2 7 4 začiatok.
2. 5 3 1 2 4 7 zámena
3. 5 3 1 2 4 7 porovnanie
4. 5 3 1 2 4 7 porovnanie
5. 5 1 3 2 4 7 zámena
6. 1 5 3 2 4 7 zámena
7. 1 5 3 2 4 7 začíname opäť z konca poľa, porovnanie
8. 1 5 3 2 4 7 porovnanie
9. 1 5 3 2 4 7 porovnanie
10. 1 5 2 3 4 7 zámena
11. 1 2 5 3 4 7 zámena
12. 1 2 5 3 4 7 začíname opäť z konca poľa, porovnanie
13. 1 2 5 3 4 7 porovnanie
14. 1 2 5 3 4 7 porovnanie
15. 1 2 3 5 4 7 zámena
16. 1 2 3 5 4 7 začíname opäť z konca poľa, porovnanie
17. 1 2 3 5 4 7 porovnanie
18. 1 2 3 4 5 7 zámena
19. 1 2 3 4 5 7 začíname opäť z konca poľa, porovnanie
20. 1 2 3 4 5 7 porovnanie
21. 1 2 3 4 5 7 začíname opäť z konca poľa, porovnanie
22. 1 2 3 4 5 7 koniec. Pole je utriedené.

Gnome sort

Jednoduchší princíp triedenie ako je Bubble sort je algoritmus trpasličieho triedenie (Gnome = trpaslík). Gnome sort[1] je založený na triediacej technike ktorú využívali holandskí záhradní trpaslíci :-) (po holandsky: tuinkabouter). Táto technika napodobuje ako triedi trpaslík radu črepníkov s kvetmi podľa veľkosti kvetov.

Princíp algoritmu

Princíp je jednoduchý: Trpaslík porovná veľkosť kvetu v črepníku pred sebou a za sebou. Ak sú v správnom poradí, tak postúpi k ďalšiemu črepníku. V opačnom prípade ich zamení a vráti sa k predchádzajúcemu črepníku.

Hraničné podmienky algoritmu: Ak už neexistuje črepník pri ktorý by sa vrátil, ide k nasledujúcemu. Ak neexistuje nasledujúci črepník (všetky sú za ním) tak trpaslík skončil triedenie.

Vzorový príklad

Majme nezotriedené pole celých čísel (tabuľka 2, riadok č. 1). Jednotlivé riadky tabuľky reprezentujú interácie triedenia. Čísla hrubo vytlačené znamenajú pozíciu trpaslíka. Žlté pozadie indikuje zámenu susedných prvkov.

Tabuľka 2 - Gnome sort
iterácia p[0] p[1] p[2] p[3] p[4] p[5] operácia
1. 5 3 1 2 7 4 začiatok.
2. 5 3 1 2 7 4 posun dopredu
3. 3 5 1 2 7 4 zamena, posun dozadu
4. 3 5 1 2 7 4 posun dopredu
5. 3 5 1 2 7 4 posun dopredu
6. 3 1 5 2 7 4 vymena, posun dozadu
7. 1 3 5 2 7 4 posun dozadu
8. 1 3 5 2 7 4 posun dopredu
9. 1 3 5 2 7 4 posun dopredu
10. 1 3 5 2 7 4 posun dopredu
11. 1 3 2 5 7 4 zamena, posun dozadu
12. 1 2 3 5 7 4 zamena, posun dozadu
13. 1 2 3 5 7 4 posun dopredu
14. 1 2 3 5 7 4 posun dopredu
15. 1 2 3 5 7 4 posun dopredu
16. 1 2 3 5 7 4 posun dopredu
17. 1 2 3 5 4 7 zamena, posun dozadu
18. 1 2 3 4 5 7 zamena, posun dozadu
19. 1 2 3 4 5 7 posun dopredu
20. 1 2 3 4 5 7 posun dopredu. Koniec

Implementácia algoritmu

Gnome sort v pseudokóde[2]

procedure gnomeSort(a[])
    pos := 0
    while pos < length(a)
        if (pos == 0) or (a[pos] >= a[pos-1])
            pos := pos + 1
        else
            swap a[pos] and a[pos-1]
            pos := pos - 1
        end if
    end while
end procedure

Gnome sort v jazyku C

void gnomesort(int n, int ar[]) {
	int i = 0;	
	while (i < n)
	{
		if (i == 0 || ar[i-1] <= ar[i]) 
		   i++;
		else 
		{  int tmp = ar[i];
		   ar[i] = ar[i-1];
		   ar[--i] = tmp;
		}
	}
}

Shake (coctail) sort

Tabuľka 3 - Shake sort
iterácia p[0] p[1] p[2] p[3] p[4] p[5] operácia
1. 5 3 1 2 7 4 začiatok.
2. 5 3 1 2 4 7 zámena, smer vľavo
3. 5 3 1 2 4 7 porovnanie, smer vľavo
4. 5 3 1 2 4 7 porovnanie, smer vľavo
5. 5 1 3 2 4 7 zámena, smer vľavo
6. 1 5 3 2 4 7 zámena, smer vľavo
7. 1 5 3 2 4 7 porovnanie, smer vpravo
8. 1 3 5 2 4 7 zámena, smer vpravo
9. 1 3 2 5 4 7 zámena, smer vpravo
10. 1 3 2 4 5 7 zámena, smer vpravo
11. 1 3 2 4 5 7 porovnanie, smer vpravo
12. 1 3 2 4 5 7 porovnanie, smer vľavo
13. 1 3 2 4 5 7 porovnanie, smer vľavo
14. 1 3 2 4 5 7 porovnanie, smer vľavo
15. 1 2 3 4 5 7 zámena, smer vľavo
16. 1 2 3 4 5 7 porovnanie, smer vpravo
17. 1 2 3 4 5 7 porovnanie, smer vpravo
18. 1 2 3 4 5 7 porovnanie, smer vpravo
19. 1 2 3 4 5 7 porovnanie, smer vľavo
20. 1 2 3 4 5 7 porovnanie, smer vľavo
21. 1 2 3 4 5 7 koniec

Odkazy