我的雲端生活網 - Life+

Showing posts with label Quicksort. Show all posts
Showing posts with label Quicksort. Show all posts

Monday, October 8, 2007

Quicksort in Erlang using two list comprehensions

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

===以上資料是錯誤的======

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

Monday, September 24, 2007

Quicksort in Erlang

-module(sort).
-export([sort/1]).

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

split(Pivot, L) ->
split(Pivot, L, [], []).
split(Pivot, [], Smaller, Bigger) ->
{Smaller, Bigger};
split(Pivot, [HdTl], Smaller, Bigger) when Hd <>
split(Pivot, Tl, [HdSmaller], Bigger);
split(Pivot, [HdTl], Smaller, Bigger) when Hd >= Pivot ->
split(Pivot, T, Smaller, [HdBigger]).

Blog Archive