也是用er编写的- -module (un).
- -mode (compile).
- -define (PP (V), io:format ("~s = ~p~n", [??V, V])).
- unique (A) -> unique (A, []).
- unique ([], A) -> lists:reverse (A);
- unique ([H|T], A) ->
- case lists:member (H, A) of
- true -> unique (T, A);
- ____ -> unique (T, [H|A])
- end.
- unik (L) -> unik (L, sets:new()).
- unik ([], S) -> sets:to_list (S);
- unik ([H|T], S) ->
- case sets:is_element (H, S) of
- true -> unik (T, S);
- ____ -> unik (T, sets:add_element (H, S))
- end.
- main (_) ->
- L = [1, 2, 1, 3, 4, 3, 5, 5, 5, 1, 1, 1, 2, 2, 3, 3, 4, 5, 2],
- TU1 = timer:tc (fun unique/1, [L]),
- TU2 = timer:tc (fun unik/1, [L]),
- TU3 = timer:tc (fun lists:usort/1, [L]),
- ?PP (L), ?PP (TU1), ?PP (TU2), ?PP (TU3),
- halt().
复制代码- L = [1,2,1,3,4,3,5,5,5,1,1,1,2,2,3,3,4,5,2]
- TU1 = {5,[1,2,3,4,5]}
- TU2 = {23,[3,2,5,1,4]}
- TU3 = {6,[1,2,3,4,5]}
复制代码 |