我是Erlang的新手。我一直在對隨機的數字列表進行快速排序(我也有它只保留唯一的數字,所以重複列表不會顯示在排序列表中)。它工作正常,輸出給沒有重複的排序數字,但我一直在試圖讓它不僅輸出列表,而且長度列表也是我遇到錯誤的地方。erlang - 是否可以在運行quicksort後輸出列表長度?
length(mod:func).
將在erlang shell中給出列表的長度沒有問題,但是在快速排序的遞歸之後,我無法讓它工作。我試過分配變量並做了lists:append
。我只是不知道我做錯了什麼。
任何人都可以解釋一下嗎?
對不起,我忘了附上下面的代碼。這是基本的快速排序。
-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,這是我想要的。
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的長度是非常直接的功能,我只是沒有正確使用/正確的方式。那有意義嗎?
我想它這樣說:
55> c(list).
{ok,list}
56> list:sort().
[1,2,3,4,5,6,9,10,11]
The length of the list is 9
請張貼你寫的代碼以及當前和預期的輸出。 – Dogbert
對不起。我忘了這麼做。我在上面編輯它。 – chitown88