Advertisement
Guest User

Untitled

a guest
Sep 26th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.79 KB | None | 0 0
  1. %összefűzéses rendezés
  2. %Van egy lista, kettébontjuk, L1 és L2
  3. %Rekurzív lépés:
  4. %   L1 első eleme: X
  5. %   L2 első eleme: Y
  6. %   Ha X =< Y
  7. %       X berak, L1 első eleme: M, L2 első eleme: Y
  8. %   Ha X > Y
  9. %       Y berak, ...
  10. %Bemeneti lista: L
  11. %Kimeneti lista: N
  12. mergesort(L,N) :- split(L,O,E), mergesort(O, SO), mergesort(E,SE), merge(SO,SE,N).
  13.  
  14. %Bemeneti: SO, SE (listák)
  15. %Kimeneti: N
  16. %! --> több alternatívát ne nézzen
  17. mergesort([], []) :- !.
  18. mergesort([X], [X]) :- !.
  19. merge(SO,SE,N) :- merge(SO,SE,[],N).
  20. merge([X|SO],[Y|SE], A, N) :- X=<Y, merge(SO,[Y|SE],[X|A], N).
  21. merge([X|SO],[Y|SE],A,N) :- X>Y, merge([X|SO], SE, [Y|A], N).
  22. %Az SE-ben van egy olyan nagy elem, ami nagyobb, mint a többi
  23. merge([], SE, A, N) :- reverse(A,B), append(B,SE,N).
  24. merge(SO,[],A,N) :- merge([], SO, A, N).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement