fork download
  1. -module(prog).
  2. -export([main/0]).
  3.  
  4.  
  5. bsearch([], _) -> -1;
  6. bsearch([H|_T], X) when X < H -> -1;
  7. bsearch(List, X) ->
  8. bsearch(List, X, 0, length(List)).
  9.  
  10. bsearch(_List, _X, First, Last) when Last < First -> -1;
  11. bsearch(List, X, First, Last) ->
  12. Middle = (First + Last) div 2,
  13. Item = lists:nth(Middle, List),
  14. case Item of
  15. X -> Middle;
  16. _Less when X < Item -> bsearch(List, X, First, Middle);
  17. _More -> bsearch(List, X, Middle + 1, Last)
  18. end.
  19.  
  20. main() ->
  21. L = [5,11,40,64,115,408,503,899,3430,3604,11212,55000],
  22. I = bsearch(L,115),
  23. erlang:display(I),
  24. true.
Success #stdin #stdout 0.06s 1750016KB
stdin
Standard input is empty
stdout
5