首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >erlang -在运行一个快速排序之后,可以输出列表长度吗?

erlang -在运行一个快速排序之后,可以输出列表长度吗?
EN

Stack Overflow用户
提问于 2017-03-26 11:08:49
回答 1查看 644关注 0票数 1

我是Erlang的新手。我一直在对随机的数字列表进行快速排序(我还让它只保留唯一的数字,这样就不会在排序列表中显示重复的数字)。它工作得很好,因为输出给出了排序的数字,没有重复,但是我一直试图让它不仅输出列表,而且输出长度列表,这也是我遇到错误的地方。

length(mod:func).将在erlang中给出列表的长度没有问题,但是在快速排序的递归之后,我无法让它工作。我尝试过分配变量并执行lists:append。我只是不知道我做错了什么。

有人能解释吗?

对不起,我忘了附上下面的代码。这是最基本的快捷键。

代码语言:javascript
复制
-module(list).
-export([sort/0]).
-export([sort/1]).

sort() -> sort([3,3,3,4,1,2,3,2,6,5,9,11,3,10,5]).

sort([]) -> [];

sort([Pivot|Tail]) ->  

    sort([ X || X <- Tail, X < Pivot]) ++

    [Pivot] ++

    sort([ X || X <- Tail, X > Pivot]).

当我在shell中运行它时,列表是很好的。如果我运行长度函数,它会给出9,这就是我想要的。

代码语言:javascript
复制
55> c(list).    
{ok,list}
56> list:sort().
[1,2,3,4,5,6,9,10,11]
57> length(list:sort()).
9

但是我试图让它只做list:sort(),然后给出列表和列表的长度。我尝试了很多不同的东西,我试着查找它,但似乎找不到如何将这两个模块结合在一起来工作。它看起来就像长度BIF是非常直接的前向函数,我只是没有使用/使用它的正确方式。这有意义吗?

我想说的是:

代码语言:javascript
复制
55> c(list).    
{ok,list}
56> list:sort().
[1,2,3,4,5,6,9,10,11]
The length of the list is 9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 16:43:56

可以使用io:格式/2打印列表长度。只需修改排序/0函数就可以为其添加一行:

代码语言:javascript
复制
 sort() -> 
     Sorted = sort([3,3,3,4,1,2,3,2,6,5,9,11,3,10,5]),
     io:format("~p~nThe length of the list is ~w~n", [Sorted, length(Sorted)]).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43027957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档