quick_sort([],[]).
quick_sort([G|R],L):-podeli(R,G,M,V),quick_sort(M,SM),quick_sort(V,SV),
							spoji(SM,[G|SV],L).

podeli([],X,[],[]).
podeli([G|R],X,[G|M],V):- G=<X, podeli(R,X,M,V).
podeli([G|R],X,M,[G|V]):- G>X, podeli(R,X,M,V).

spoji([],X,X).
spoji([G|R],X,[G|R1]):- spoji(R,X,R1).

par(X,Y):- name(Y,Z), duzina(Z,X).
duzina([],0).
duzina([G|R],X):- duzina(R,X1), X is X1+1.

lista([],[]). /*predikatom lista pozivamo sa listom clanova i ispisuje na listu parova*/
lista([G|R]):- par(X,G),Y=..[par,X,G],write(Y),nl,lista(R),!.

dodaj_na_kraj([],X,[X]):-!.
dodaj_na_kraj([G|R], X, [G|Y]):-dodaj_na_kraj(R, X, Y).

sortiranalista([],[]).
sortiranalista([G|R],L):- par(X,G), 
  sortiranalista(R,L1),
  dodaj_na_kraj(L1,X,L).
sortiranalista1(L,L1):- sortiranalista(L,L2),
  quick_sort(L2,L1). /*predikatom sortiranalista1
ispujemo samo sortirani niz po prvom argumentu par*/




