迭代器实现二分法搜索

来源:互联网 发布:软件商城建设 编辑:程序博客网 时间:2024/05/21 08:04

// 二分法.cpp : 定义控制台应用程序的入口点。
#include <iostream>
#include <vector>
using namespace std;
int a[9]={1,2,3,4,6,8,9}; 
vector<int> text(a,a+7);
int sought;
vector<int>::iterator beg,mid,end;
bool in(int a);
int main()
{
 sought =7;
 bool is=in(sought);
 if (is==true)
  printf("%i在有序队列中", sought);
 else
  printf("%i不在有序队列中", sought);
 return 0;
 getchar();
}

bool in(int a)
{
 beg = text.begin(), end = text.end();
 mid = text.begin() + (end - beg) / 2;
 while (mid != end&&*mid != sought)
 {
  if (a < *mid)//向前
  {
   end = mid;
   printf("a<%d\n", *mid);
  }
   
  else              //向后
  {
   printf("a>%d\n", *mid);
   beg = mid + 1;
  }
   
  mid = beg + (end - beg) / 2;
 }
 if (mid==end)
  return false;
 else
  return true;
}

0 0