Triedenie výmenou: Rozdiel medzi revíziami
Riadok 25: | Riadok 25: | ||
|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 | ||
|- | |- | ||
− | |3.||5||3||1||'''2'''||4||7|| | + | |3.||5||3||1||'''2'''||4||7||porovnanie |
|- | |- | ||
− | |4.||5||3||'''1'''||2||4||7|| | + | |4.||5||3||'''1'''||2||4||7||porovnanie |
|- | |- | ||
|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 | ||
Riadok 33: | Riadok 33: | ||
|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 | ||
|- | |- | ||
− | |7.||style="background-color:lightgreen"|1||5||3||2||4||'''7'''|| | + | |7.||style="background-color:lightgreen"|1||5||3||2||4||'''7'''||začíname opäť z konca poľa, porovnanie |
|- | |- | ||
− | |8.||style="background-color:lightgreen"|1||5||3||2||'''4'''||7|| | + | |8.||style="background-color:lightgreen"|1||5||3||2||'''4'''||7||porovnanie |
|- | |- | ||
− | |9.||style="background-color:lightgreen"|1||5||3||'''2'''||4||7|| | + | |9.||style="background-color:lightgreen"|1||5||3||'''2'''||4||7||porovnanie |
|- | |- | ||
|10.||style="background-color:lightgreen"|1||5||style="background-color:yellow"|'''2'''||style="background-color:yellow"|3||4||7||zámena | |10.||style="background-color:lightgreen"|1||5||style="background-color:yellow"|'''2'''||style="background-color:yellow"|3||4||7||zámena | ||
Riadok 43: | Riadok 43: | ||
|11.||style="background-color:lightgreen"|1||style="background-color:yellow"|'''2'''||style="background-color:yellow"|5||3||4||7||zámena | |11.||style="background-color:lightgreen"|1||style="background-color:yellow"|'''2'''||style="background-color:yellow"|5||3||4||7||zámena | ||
|- | |- | ||
− | |12.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||3||4||'''7'''|| | + | |12.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||3||4||'''7'''||začíname opäť z konca poľa, porovnanie |
|- | |- | ||
− | |13.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||3||'''4'''||7|| | + | |13.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||3||'''4'''||7||porovnanie |
|- | |- | ||
− | |14.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||'''3'''||4||7|| | + | |14.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||5||'''3'''||4||7||porovnanie |
|- | |- | ||
|15.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:yellow"|'''3'''||style="background-color:yellow"|5||4||7||zámena | |15.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:yellow"|'''3'''||style="background-color:yellow"|5||4||7||zámena | ||
|- | |- | ||
− | |16.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||5||4||'''7'''|| | + | |16.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||5||4||'''7'''||začíname opäť z konca poľa, porovnanie |
|- | |- | ||
− | |17.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||5||'''4'''||7|| | + | |17.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||5||'''4'''||7||porovnanie |
|- | |- | ||
|18.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:yellow"|'''4'''||style="background-color:yellow"|5||7||zámena | |18.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:yellow"|'''4'''||style="background-color:yellow"|5||7||zámena | ||
|- | |- | ||
− | |19.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||5||'''7'''|| | + | |19.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||5||'''7'''||začíname opäť z konca poľa, porovnanie |
|- | |- | ||
− | |20.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||'''5'''||7|| | + | |20.||style="background-color:lightgreen"|1||style="background-color:lightgreen"|2||style="background-color:lightgreen"|3||style="background-color:lightgreen"|4||'''5'''||7||porovnanie |
|- | |- | ||
− | |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||'''7'''|| | + | |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||'''7'''||začíname opäť z konca poľa, porovnanie |
|- | |- | ||
− | |22.||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|| | + | |22.||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. Pole je utriedené. |
|} | |} | ||
Verzia zo dňa a času 21:32, 22. február 2010
Obsah
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.
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
Odkazy
- ↑ Gnome sort - http://www.cs.vu.nl/~dick/gnomesort.html
- ↑ Gnome sort (wiki) http://en.wikipedia.org/wiki/Gnome_sort