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}.