##一言
最近なぜか忙しい・・・。
仕事はそんなに多くないが・・・。
なぜか
契約切れるから引っ越し準備してたら事務所も引っ越して・・・。
なんてタイミング
ということで本題
標題的に何か、眼鏡をかけた赤と白のボーダーの服を着ている人を連想させますが・・・。
##配列の中から任意の数字を探せ
今日も朝学習で前にもやった課題にチャレンジ(2回目)
array=[1,3,5,6,9,10,13,20,26,31]
※出力例:
検索したい数字を入力してください
5 5は配列の2番目に存在します
7 7は配列内に存在しません
こんな感じで出せと
ちょっと忘れててわからず解説見てしまいました。
真ん中のデータを取り出して、左右で大小の比較、それを繰り返し処理で範囲を絞っていって最終的にどの数字かを当てていくやり方。
所謂、二分探索(バイナリーサーチ)というやつ
で、恥ずかしながら昨日あげた記事にコメントいただいた内容で初めて知った言葉で「線形探索(リニアサーチ)」なる言葉をご教授いただき、このやり方でやってみようと思い投稿しました。
def linear_search(array, num)
array.each_with_index do |n, index|
if n == num
return index
end
end
return
end
array=[1,3,5,6,9,10,13,20,26,31]
puts "検索したい数字を入力してください"
num = gets.to_i
result = linear_search(array, num)
if result.nil?
puts "#{num}は配列内に存在しません"
else
puts "#{num}は配列の#{result+1}番目に存在します "
end
※コメントにてご指摘いただいた内容、修正済み
これで同じような出力結果が出せました。
線形探索などの言葉は意識してなかったですが、いつもやってるような感じだったのでこっちの方が個人的にはやりやすかった。
めでたし