erlang:列表拼接/过滤列表/快速排序

[root@han learn_erl]# erl
Erlang/OTP 22 [erts-10.7.2.1] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]

Eshell V10.7.2.1  (abort with ^G)
1> c(conact).
{error,non_existing}
2> c(concat). 
concat.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,concat}
3> 
3> 
3> concat:concat([[1],2,3]).
[1,2,3]
4> 
4> 
4> concat:concat([[1],[2],3]).
[1,2,3]
5> 
5> concat:concat([[1],[2,[4]],3]).
[1,2,4,3]
6> 
6> 
6> concat:concat([[1,1],[2,[4]],3]).
[1,1,2,4,3]
7> 
7> 
7> q().
ok
8> [root@han learn_erl]# 
[root@han learn_erl]# 
[root@han learn_erl]# 
[root@han learn_erl]# 
[root@han learn_erl]# cat concat.erl 

 

-module(concat).
-compile(export_all).

concat(List)-> concat(List, []).

concat([], List) -> List;
%concat([Hd|Tl], List) when is_list(Hd) == false -> concat(Tl, [Hd|List]);
concat([Hd|Tl], List) when is_list(Hd) == false -> [Hd]++concat(Tl, List);
concat([Hd|Tl], List) -> concat(Hd, []) ++ concat(Tl, List).

filter([], A, List) -> lists:reverse(List);
filter([Head|Tail], A, List) when Head /= A -> filter(Tail, A, [Head|List]);
filter([_|Tail], A, List) -> filter(Tail, A, List).

%集合去重,Acc初始传入为[],存放的是最终的结果
delSame([], Acc) -> Acc;
delSame([Pre|T], Acc) -> delSame([X||X<-T,X=/=Pre],Acc++[Pre]).

%求交集
crossList(L1,L2) ->
   [X||X<-L1,Y<-L2,X=:=Y].

%求并集
mergeList(L1,L2)->
     delSame(lists:merge(L1,L2),[]).

%qsort([H|T]) ->
%    qsort([X||X<-T,X =< H])++[H]++qsort([X||X<-T,X > H]).

qsort([])->[];
qsort([Pivot|T])->
  qsort([X||X<-T,X=<Pivot]) ++ [Pivot] ++ qsort([X||X<-T,X>Pivot]).  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值