0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby] 配列の中から数字を探せ

Last updated at Posted at 2020-12-15

##一言
最近なぜか忙しい・・・。
仕事はそんなに多くないが・・・。
なぜか
契約切れるから引っ越し準備してたら事務所も引っ越して・・・。
なんてタイミング

ということで本題
標題的に何か、眼鏡をかけた赤と白のボーダーの服を着ている人を連想させますが・・・。

##配列の中から任意の数字を探せ

今日も朝学習で前にもやった課題にチャレンジ(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

※コメントにてご指摘いただいた内容、修正済み

これで同じような出力結果が出せました。
線形探索などの言葉は意識してなかったですが、いつもやってるような感じだったのでこっちの方が個人的にはやりやすかった。

めでたし

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?