有没有办法按升序或降序对列表中的所有元素进行排序?
例如,List1创建如下:
List1 = [4,3,2,6,1,5]。
我需要此输出 - > List2 = sort(List1)。
List2 == [1,2,3,4,5,6]
真
答案 0 :(得分:4)
lists:sort([2,3,6,5,1,7,13,4]).
或
lists:sort(ListToSort).
将以升序返回整数的排序列表。感谢@Dogbert指出了明显的问题。
答案 1 :(得分:3)
我们有很多方法可以排序,所以有时你可以自己做。这是我学习Erlang的方式:)
-spec sort(List) -> SortedList when
List :: [integer()],
SortedList :: [integer()].
sort([Pivot | Tail]) ->
{Smaller, Larger} = partition(Pivot, Tail, [], []),
sort(Smaller) ++ [Pivot] ++ sort(Larger);
sort([]) -> [].
partition(Check, [Head | Tail], Smaller, Larger) ->
case Head =< Check of
true -> partition(Check, Tail, [Head | Smaller], Larger);
false -> partition(Check, Tail, Smaller, [Head | Larger])
end;
partition(_, [], Smaller, Larger) -> {Smaller, Larger}.