アルゴリズム図解第一章アルゴリズム概要の二分ルックアップC++コード実装
3212 ワード
二分ルックアップは、効率の高いルックアップ方法である半角ルックアップ(Binary Search)とも呼ばれます.ただし、半角ルックアップでは、線形テーブルは順序記憶構造を採用する必要があり、テーブル内の要素はキーワード順に並べられています.
これは何も言うことはありません.本ではよく言っています.ここではデフォルトは秩序ある配列です.もし無秩序が検索する前にソートを追加してから検索することができたら、最適なソートアルゴリズムを使えばいいです.ソートアルゴリズムはここでは言いません.また、再帰でも二分検索は実現できますが、スペースがかかりすぎるのでお勧めしません.以下はC++コード実装です.
これは何も言うことはありません.本ではよく言っています.ここではデフォルトは秩序ある配列です.もし無秩序が検索する前にソートを追加してから検索することができたら、最適なソートアルゴリズムを使えばいいです.ソートアルゴリズムはここでは言いません.また、再帰でも二分検索は実現できますが、スペースがかかりすぎるのでお勧めしません.以下はC++コード実装です.
int BS(vector<int>& a,int key){
int l=0,r=a.size(),m;
while(l<=r)
{
m=l+(r-l)/2; // r+l
if(a[m]==key) return m;
else if(a[m]<key) r=m-1;
else if(a[m]>key) l=m+1;
}
return -1;
}