Urejanje s stresanjem/Implementacija (Java)

Iz MaFiRaWiki

  1. /* Shake sort - algoritem, ki uredi dano tabelo tako, da v vsakem prehodu skozi zanko pregleda tabelo v obeh smereh
  2. in postavi na pravo mesto njen največji in najmanjši element. Postopek ponavlja, dokler tabela ni urejena.*/
  3. Public static void shakeSort(int tabela[])
  4. {
  5. int levi = 0; // prvi element ima indeks 0
  6. int desni = list_length - 1;
  7. boolean menjava = true;
  8. int i;
  9.  
  10. public static void menjava (int a, int b) // metoda ki zamenja elementa a in b
  11. int temp = a;
  12. a = b;
  13. b = temp;
  14.  
  15. while(menjava == true) // če se noben element ne zamenja, potem je tabela urejena
  16. {
  17. menjava = false;
  18. for(i = desni; i > levi; i = i - 1) // pregledamo vse elemente od desne proti levi, manjše elemente pomikamo levo
  19. {
  20. if(tabela[i] < tabela[i - 1]) // če je element manjši od svojega predhodnika
  21. {
  22. menjava(tabela[i], tabela[i - 1]); // ju zamenjamo
  23. menjava = true;
  24. }
  25. }
  26. levi = levi + 1; // povečamo indeks levega dela, saj je najmanjši element sedaj na začetku
  27. for(i = levi; i < desni; i = i + 1) // pregledamo vse elemente od leve proti desni, večje elemente pomikamo desno
  28. {
  29. if(tabela[i] > tabela[i + 1]) // če je element večji od svojega naslednika
  30. {
  31. menjava(tabela[i], tabela[i + 1]); // ju zamenjamo
  32. menjava = true;
  33. }
  34. }
  35. desni = desni - 1; // zmanjšamo indeks desnega dela, saj je največji element sedaj na koncu
  36. }
  37. }
Osebna orodja