アルゴリズムの勉強で線形探索をやっている。
cで作ったけど、Erlangでも作ってみた。
ソースを記載しておく。
こういったものはGitHubに置くべきだと思う。今セッティング中...
【ソース】
----- ここから -----
%% -------------
%% linear_search of array
%% -------------
-module(linear_search).
-export([search2_2_1/2]).
-ifdef(test).
-include_lib("eunit/include/eunit.hrl").
-endif.
% 表の線形探索
% @spec search2_2_1(Array,Target) -> {true,pos} | false
search2_2_1(Array,Target) ->
i_search2_2_1(Array,Target,0).
% @spec i_search2_2_1(Array,Target,Index) ->{true,pos} | false
i_search2_2_1(Array,Target,Index) when Index < size(Array) ->
X = array:get(Index,Array),
if
X =:= Target -> {true,Index};
true -> i_search2_2_1(Array,Target,Index + 1)
end;
i_search2_2_1(Array,Target,Index) when Index >= size(Array) ->
false.
-ifdef(test).
-define(FUNC(X,Y),search2_2_1(X,Y)).
-define(AL(),(array:from_list( [1,3,4] ))).
m1_test() -> ?FUNC(?AL(),1) =:= 0.
m2_test() -> ?FUNC(?AL(),3) =:= 1.
m3_test() -> ?FUNC(?AL(),4) =:= 2.
m4_test() -> ?FUNC(?AL(),2) =:= false.
-endif.
----- ここまで -----
次は、2分探索をErlangで書いてみたい。