ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

MATLAB で2分探索

2009/01/10
(2018/11/13 最終更新)
(この記事の文字数: 109)

MATLABを使用して2分探索をするプログラムを書いたのでソースコードと使用方法を載せます。指定した配列の中から、指定した数値にもっとも近い数値を格納している配列番号を返しますプログラムです。

ソースコード


function[ans] = binarySearch(src,key)
  left = 1;
  right = length(src);
  while 1
      center = int16((left + right)/2);
      if(left>=right)
          break;
      elseif(key>src(center))
          left = center+1;
      else
          right = center-1;
      end
  end
  if(left ~= right)
      if(abs(src(left)-key)>=abs(src(right)-key))
          ans=right;
      else
          ans=left;
      end
  else
      if(left<length(src) && left>1)
          if(abs(src(left)-key)>=abs(src(left+1)-key))
              ans=left+1;
          elseif(abs(src(left)-key)>=abs(src(left-1)-key))
              ans=left-1;
          else
              ans=left;
          end
      elseif(left==length(src))
          if(abs(src(left)-key)>=abs(src(left-1)-key))
              ans=left-1;
          else
              ans=left;
          end
      else
          if(abs(src(left)-key)>=abs(src(left+1)-key))
              ans=left+1;
          else
              ans=left;
          end
      end  
  end  
end

使用方法


binarySearch(探索する配列, 探索する数値);

使用例


>x=[1 8 13 25 31 38 47 55 64 71];
>v=53;
>binarySearch(x,v);
ans=
        8
>x(binarySearch(x,v));
ans=
        55

  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

<<「ソフトウェア開発」の次の記事

コメント(0 件)



コンテンツロード: 0.0079 sec
Copyright(C)2006-2024 puarts All Rights Reserved