

バイナリーサーチ／二分探索のコードを再帰を使ってRubyで自分なりに、実装してみました。

採点というか評価していただけないでしょうか？ 正しく動くのですが、書き方としてどうなのかが心配でした。  
※bubble_sort(list)で昇順ソートすると仮定してください。

[code]

    def binary_search(list,target)
      sorted_list = bubble_sort(list)
      center = sorted_list.length / 2
    
      if sorted_list.length == 1
        if sorted_list[0] == target
          return "found!"
        else
          return "not found!"
        end
      else
        if sorted_list[center] == target
          return "found!"
        elsif sorted_list[center] < target
          binary_search(sorted_list[center+1,sorted_list.length-1],target)
        elsif sorted_list[center] > target
          binary_search(sorted_list[0,center-1],target)
        end
      end
    end
    
[/code]


CC BY-SA 3.0
2016-08-21T07:18:07.893
28405
2016-08-21T08:12:03.923
17247
question
ruby アルゴリズム
rubyで書いた二分探索の再帰コードを評価お願いします


毎回バブルソートをするのは処理的に無駄なので、すでにソート済みの配列しか受け取らないという仕様に変えたほうが良いと思います。

[code]

    if sorted_list[center] == target
    ...
    elsif sorted_list[center] < target
    ..
    elsif sorted_list[center] > target
    end
    
[/code]

ここは最後は`else`だけで良いのではと思ったのですが、間違っていたらすみません。

戻り値は検索して見つかった配列要素にしたほうが使い勝手が良くなると思います。見つからなかったら`nil`という感じで。

ご参考までに。


CC BY-SA 3.0
2016-08-21T08:12:03.923
28408
2016-08-21T08:12:03.923
9403
28405
answer