Hitro urejanje/Implementacija (Java)

Iz MaFiRaWiki

  1. import java.util.Comparator;
  2. import java.util.Random;
  3.  
  4. public class HitroUredi {
  5. public static final Random Nakljucno = new Random();
  6.  
  7. private void obrni(Object[] vrsta, int i, int j) {
  8. Object tmp = vrsta[i];
  9. vrsta[i] = vrsta[j];
  10. vrsta[j] = tmp;
  11. }
  12.  
  13. private int premeci(Object[] vrsta, int zacetek, int konec, Comparator cmp) {
  14. int index = zacetek + Nakljucno.nextInt(konec - zacetek + 1);
  15. Object pivot = vrsta[index];
  16. obrni(vrsta, index, konec);
  17. for (int i = index = zacetek; i < konec; ++ i) {
  18. if (cmp.compare(vrsta[i], pivot) <= 0) {
  19. obrni(vrsta, index++, i);
  20. } }
  21. obrni(vrsta, index, konec);
  22. return (index);
  23. }
  24.  
  25. private void uredi(Object[] vrsta, int zacetek, int konec, Comparator cmp) {
  26. if (konec > zacetek) {
  27. int index = premeci(vrsta, zacetek, konec, cmp);
  28. uredi(vrsta, zacetek, index - 1, cmp);
  29. uredi(vrsta, index + 1, konec, cmp);
  30. }
  31. }
  32.  
  33. public void uredi(Object[] vrsta, Comparator cmp) {
  34. uredi(vrsta, 0, vrsta.length - 1, cmp);
  35. }
  36. }
Osebna orodja