现在的位置: 首页 > 综合 > 正文

【erlang学习笔记】erlang快速排序练习

2013年02月21日 ⁄ 综合 ⁄ 共 457字 ⁄ 字号 评论关闭

erlang的FP特性以及模式匹配实在太好用了,代码优雅简洁。
废话少说,上一个erlang快速排序的代码:

-module(sort).
-compile(export_all).

qsort([]) -> [];
qsort([Pivot | Rest]) ->
    {Bigger, Smaller} = split(Pivot, Rest),
    lists:append(qsort(Bigger), [Pivot | qsort(Smaller)]).

split(Pivot, L) ->
    split(Pivot, L, [], []).

split(Pivot, [H | T], Smaller, Bigger) when H < Pivot ->
    split(Pivot, T, [H | Smaller], Bigger);

split(Pivot, [H | T], Smaller, Bigger) when H >= Pivot ->
    split(Pivot, T, Smaller, [H | Bigger]);

split(_Pivot, [], Smaller, Bigger) ->
    {Smaller, Bigger}.

抱歉!评论已关闭.