gpt4 book ai didi

Erlang 冒泡排序

转载 作者:行者123 更新时间:2023-12-03 04:48:06 24 4
gpt4 key购买 nike

我正在学习Erlang并决定在其中实现冒泡排序,我花了一些努力,结果我成功了,但我发现我的思维方式是不正确的,是否有更有效的方法来实现它或不是吗?

bubble_sort(L) ->
if
length(L) > 1 ->
SL=bubble_sort_p(L),
bubble_sort(lists:sublist(SL,1,length(SL)-1)) ++ [lists:last(SL)];
true -> L
end.

bubble_sort_p([]) -> [];
bubble_sort_p([F | R]) ->
case length(R) > 0 of
true -> case F > hd(R) of
true -> [hd(R)] ++ bubble_sort_p([F|tl(R)]);
false -> [F] ++ bubble_sort_p([hd(R)|tl(R)])
end;
false -> [F]
end.

最佳答案

我的想法是:

bubble_sort(L) -> bubble_sort(L, [], false).

bubble_sort([A, B | T], Acc, _) when A > B ->
bubble_sort([A | T], [B | Acc], true);
bubble_sort([A, B | T], Acc, Tainted) ->
bubble_sort([B | T], [A | Acc], Tainted);
bubble_sort([A | T], Acc, Tainted) ->
bubble_sort(T, [A | Acc], Tainted);
bubble_sort([], Acc, true) ->
bubble_sort(lists:reverse(Acc));
bubble_sort([], Acc, false) ->
lists:reverse(Acc).

如果我们谈论效率,我们显然不应该首先采用冒泡排序。

关于Erlang 冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com