Hola, aqui les comparto los algoritmos de ordenacion burbuja y merguesort, implementados en el lenguaje prolog.
Ordenamiento Burbuja (BubbleSort):
Es un Sencillo algoritmo de ordenamiento, funciona revisando cada elemento de la lista que va ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. es necesario revisar varias veces toda la lista hasta que no se necesiten mas intercambios, lo cual significa que la lista esta ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "Burbujas". también es conocido como el método de intercambio directo.
Implementacion en Prolog
- %--------------------------- burbuja --------------------------------------
- % intercambiar
- intercambiar([X], [X]).
- intercambiar([X,Y|L], [X|RL]):-Y > X,intercambiar([Y|L], RL).
- intercambiar([X,Y|L], [Y|RL]):- Y =< X,intercambiar([X|L], RL).
- % separar_ultimo
- separar_ultimo([X], [], X).
- separar_ultimo([X,Y|L], [X|RL], Z):-separar_ultimo([Y|L], RL, Z).
- burbuja([], []).
- burbuja([X|RX], L0):- intercambiar([X|RX], R1),separar_ultimo(R1, Lista, Ultimo),burbuja(Lista, ListaO),concatenar(ListaO, [Ultimo],L0).
Algoritmo Mergesort:
El algoritmo de ordenamiento por Mezcla(MergueSort) es un algoritmo de ordenamiento externo estable basado en la técnica Divide y Venceras.
- mergesort([],[]).
- mergesort([A],[A]).
- mergesort([A,B|R],S) :-
- split([A,B|R],L1,L2),
- mergesort(L1,S1),
- mergesort(L2,S2),
- merg(S1,S2,S).
- split([],[],[]).
- split([A],[A],[]).
- split([A,B|R],[A|Ra],[B|Rb]) :- split(R,Ra,Rb).
- merg(A,[],A).
- merg([],B,B).
- merg([A|Ra],[B|Rb],[A|M]) :- A =< B, merg(Ra,[B|Rb],M).
- merg([A|Ra],[B|Rb],[B|M]) :- A > B, merg([A|Ra],Rb,M).
Seguiré publicando mas algoritmos de ordenamiento, or ahora les comparto estos, espero les sirva. no se olviden de dar +1 .
SOCIALIZA ESTO →