C++二分法配列でキーワードを検索する方法

1350 ワード

この例では,C++二分法により配列内でキーワードを検索する方法について述べる.皆さんの参考にしてください.具体的には以下の通りです.

/*
               (            )   。
*/
#include 
using namespace std;
/*
    :           (                )
     :          ,   -1     
  a[]:        
  len:        
  key:         
*/
int binSearch(int a[], int len, int key)
{
  int i = len / 2;
  int ii = 0;
  if(len < 1)
    return -1;
  if((key > a[i]) && (len - i > 0))
  {
    ii = binSearch(a+i+1, len - i - 1, key); //          
    if(ii != -1)
      return ii + i + 1; //           
    else
      return -1;
  }
  else if(key < a[i] && i > 0) //          
    return binSearch(a, i, key);
  else if(key == a[i])
    return i; //             
  else
    return -1; //           
}
int main()
{
  int a[] = {2, 4, 5, 20, 24, 35, 66, 78, 98};
  int len = sizeof(a) / sizeof(int);
  int i, key = -1;
  while(1)
  {
    cin>>key;
    i = binSearch(a, len, key);
    printf("%d
", i); if(key > 100) break; } return 0; }

本稿で述べたことが皆さんのC++プログラム設計に役立つことを願っています.