У меня проблема с написанием быстрой сортировки на эрланге.Что я делаю, так это то, что я порождаю два процесса и затем блокирую текущий процесс, пока не получу ответ от левого и правого подмассивов.Получив оба эти ответа, я отправляю сообщение его родителю, давая ему вычисляемый список.Parent ! {self(), Lone ++ [H] ++ Ltwo}
Но я получаю ошибку получения undef в обоих подпроцессах.Вот код.
quick(Parent, []) -> Parent ! {self(), []};
quick(Parent, [H | T]) ->
Pone = spawn_link(main, quick, [ self(), [ X || X <- T, H >= X ] ]) ,
Ptwo = spawn_link(main, quick, [ self(), [ Y || Y <- T, H < Y ] ]) ,
receive
{Pone, Lone} ->
receive
{Ptwo, Ltwo} -> Parent ! {self(), Lone ++ [H] ++ Ltwo}
end;
{Ptwo, Ltwo} ->
receive
{Pone, Lone} -> Parent ! {self(), Lone ++ [H] ++ Ltwo}
end
end.
sortquick(List) ->
quick(self(), List).
, называемый:
main:sortquick([12,4,7,22,25]).