Naloga/Podatkovne strukture in algoritmi/Hitro urejanje/Rešitev (Java)

Iz MaFiRaWiki

  1.  
  2. public class HitroUrejanje
  3. {
  4. public static void main(String[] args)
  5. {
  6. int tabela[] = {7,2,4,1,5,3,6};
  7. uredi(tabela);
  8. for (int i=0; i<tabela.length; i++)
  9. System.out.println(tabela[i]);
  10. }
  11. private static void uredi(int[] tabela)
  12. {
  13. uredi(tabela, 0, tabela.length - 1);
  14. }
  15. private static void uredi(int[] tabela, int zacetek, int konec)
  16. {
  17. // Preverimo konec rekurzije!
  18. if (konec <= zacetek)
  19. return ;
  20. int i = zacetek + 1; // Prvi element je pivot.
  21. int j = konec;
  22. // Premečemo tabelo.
  23. while (i<j)
  24. {
  25. while (i<j && tabela[i]<tabela[zacetek])
  26. i++;
  27. while (i<j && tabela[j]>tabela[zacetek])
  28. j--;
  29. zamenjaj(tabela, i, j);
  30. }
  31. // Poiščemo kam moramo prestaviti pivot.
  32. // i lahko kaže na element ki je večji od pivota ali pa manjši od pivota!
  33. while (zacetek < i && tabela[i] > tabela[zacetek])
  34. i--;
  35. // Prestavimo pivot.
  36. zamenjaj(tabela, zacetek, i);
  37. // Rekurzivno kličemo metodo uredi.
  38. uredi(tabela, zacetek, i-1);
  39. uredi(tabela, i+1, konec);
  40. }
  41.  
  42. private static void zamenjaj(int tabela[], int i, int j)
  43. {
  44. int tmp = tabela[i];
  45. tabela[i] = tabela[j];
  46. tabela[j] = tmp;
  47. }
  48. }
Osebna orodja