我对函数式编程语言还很陌生,不明白为什么在Erlang中,如果我使用冒泡排序、快速排序或其他排序算法来排序[8],它会返回"\b"。或者[12,10,11]将返回"\n\v\f"。请问有人可以帮助我吗?
我对函数式编程语言还很陌生,不明白为什么在Erlang中,如果我使用冒泡排序、快速排序或其他排序算法来排序[8],它会返回"\b"。或者[12,10,11]将返回"\n\v\f"。请问有人可以帮助我吗?
1> [104, 101, 108, 108, 111].
"hello"
2> [104, 101, 108, 108, 111, -1].
[104,101,108,108,111,-1]
3> [104, 101, 108, 108, 111] =:= "hello".
true
这是因为Erlang将字符串表示为数字列表。在打印这样的列表时,Erlang输出函数会查看您的列表是否包含所有对应于ASCII字符值的数字。如果是,则将其作为字符串打印。
听起来你的代码是正确的。尝试使用现有代码对[12345,29348,978]
进行排序,看看会发生什么。
有关此信息,请参见参考手册第2.11节String。
-module(solution).
-import(lists,[delete/2,max/1]).
-compile(export_all).
selection_sort([],Sort)-> Sort;
selection_sort(Ar,Sort)->
M=max(Ar),
Ad=delete(M,Ar),
selection_sort(Ad,[M|Sort]).
print_array([])->ok;
print_array([H|T])->
io:format("~p~n",[H]),
print_array(T).
main()->
Ans=selection_sort([1,5,7,8,4,10],[]),
print_array(Ans).