26 lines
740 B
Perl
26 lines
740 B
Perl
![]() |
my_sort([], Sorted2, Sorted2).
|
||
|
|
||
|
my_sort(Unsorted, Sorted, Sorted2) :-
|
||
|
get_max(Unsorted, Max, LessList),
|
||
|
append(Sorted, [Max], NewSorted),
|
||
|
my_sort(LessList, NewSorted, Sorted2).
|
||
|
|
||
|
my_sort(Unsorted, Sorted) :-
|
||
|
my_sort(Unsorted, [], ReverseSorted),
|
||
|
reverse(ReverseSorted, Sorted),
|
||
|
write(Sorted).
|
||
|
|
||
|
get_max([], Max, LessList, Max, LessList).
|
||
|
|
||
|
get_max(Unsorted, X, Unsorted2, Max, LessList) :-
|
||
|
select(Y, Unsorted, Rest),
|
||
|
(X > Y,
|
||
|
append(Unsorted2, [Y], NewList),
|
||
|
get_max(Rest, X, NewList, Max, LessList);
|
||
|
append(Unsorted2, [X], NewList),
|
||
|
get_max(Rest, Y, NewList, Max, LessList)).
|
||
|
|
||
|
get_max(Unsorted, Max, LessList) :-
|
||
|
select(X, Unsorted, Unsorted2),
|
||
|
get_max(Unsorted2, X, [], Max, LessList).
|