2
1

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.

アルゴリズム線形検索と二分検索の違い

Posted at

線形検索アルゴリズム

線形検索アルゴリズムとは、配列からデータを検索するアルゴリズムです。
線形検索は配列がソート(整列)されていない場合にも適応することができることが特徴です。
配列から検索できるのは線形検索と二分検索ですが、これらの何が違うのでしょうか。

線形検索と二分検索の違い

これらの違いは、処理の仕方が異なるということです。
目的は同じで配列の中から結果を出しますが、処理の内容が異なるので、処理の完了までの時間も異なります。

二分検索

二分検索の処理はソートされているのが、条件の一つになります。
ソートされている状態で、配列の中央からデータを分割にして値の検索を行います。

線形検索

線形検索は、二分検索と異なり、配列がソートされていない状態での検索が可能になります。
検索開始地点は配列の先頭から検索していく特徴があります。

       1, 10, 4, 8, 5, 7, 6, 3, 9, 2
      →1から順番に期待している値を検索する

線形検索の特徴は、
・ソートする必要がないこと。
・ソートされていない配列に適応することができること。
・左から順番に検索を行うので、データが大きい時や期待しているデータが最後にある時は処理が二分検索に比べて長くなってしまうこと。

1が最初に来て期待する値も1あれば、二分検索よりも早い処理をしますが、大きいデータや最後にあるデータを見つけつとなると線形検索は劣ってしまうことです。

Rubyのコードを書いてみる

rubyをコードで表すとこのようになります。
indexメソッドは配列を左から処理をするメソッドの一つです。

  array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  target = 6
  result = array.index(target)

  if result
    puts "#{target}#{result + 1}番目にある"
  else
    puts "#{target}は配列には存在しない値"
  end

最後に

処理の期待する値が同じでも処理が異なると、速さも変わってくると思うとどの場面に適応すべきかなど理解できるようになったと思います。
わかりにくいことがあったり、アドバイスがあればコメントお願いします。

2
1
0

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?