id:t-fridgeさんがマージソート@Erlangを書いていてかなり面白そうなので自分も書いてみた。
Erlangでmerge sortを作ってみる練習 - Keep it in the fridge
実は問題3.6でマージソートを書くのでかなり参考になりました。

- 作者: Francesco Cesarini,Simon Thompson
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2009/06/26
- メディア: ペーパーバック
- 購入: 1人 クリック: 44回
- この商品を含むブログ (21件) を見る
ソース
%% Author: Ehren %% Created: 2009/11/11 %% Description: TODO: Add description to sort -module(sort). %% %% Include files %% -include_lib("eunit/include/eunit.hrl"). %% %% Exported Functions %% -export([my_mergesort/1]). %% -------------------------------------------------------------------- %% Test Functions %% -------------------------------------------------------------------- my_mergesort_test_() -> [ ?_assertEqual(my_mergesort([1,3,2]),[1,2,3]), ?_assertEqual(my_mergesort([3,2,0,1,5,8,4,2,2,7]),[0,1,2,2,2,3,4,5,7,8]) ]. %% -------------------------------------------------------------------- %% Func: my_mergesort/1 %% Returns: mergesorted list %% -------------------------------------------------------------------- my_mergesort(L) when length(L) < 2 -> L; my_mergesort(L) -> {Left,Right} = lists:split(length(L) div 2, L), lists:merge(my_mergesort(Left), my_mergesort(Right)).
今後の勉強予定
listsのbifはいろいろあって便利。でも車輪の再発明でもいいから、listsモジュールの各メソッドを
自分で書いてもかなり勉強になりそうですね。