#include <iostream>
#include <vector>
#include<windows.h>
#include<conio.h>
using namespace std;
static int x=1;
int main()
{
while(x==1)
{
static int n;
static int a[200];
static int find;
//**********************************
//===========初始化一个int型数组============
//**********************************
printf("请输入数组的元素个数\n");
scanf("%i",&n);
printf("请依次输入数组的元素:\n");
for(int i=0;i<n;i++)
{
scanf("%i",&a[i]);
}
printf("请输入要寻找的数:\n");
scanf("%i",&find);
//*************************************
//=======下面是迭代法实现的二分搜索===========
//*************************************
vector<int>::iterator beg,mid,end; //声明迭代器起始位置、中间、末尾的下一位置
vector<int> text(a,a+n);
bool is;
beg = text.begin(), end = text.end();
mid = text.begin() + (end - beg) / 2;
while (mid != end&&*mid != find)
{
if (find < *mid) //向前分
{
end = mid;
printf("find<%d\n", *mid);
}
else //向后分
{
printf("find>%d\n", *mid);
beg = mid + 1;
}
mid = beg + (end - beg) / 2;
}
if (mid==end) //如果中分数的位置超过迭代器末尾的下一位置,返回非,此时已经遍历整个队列,但是没有找到那个元素
is=false;
else
is=true;
//*************************************
//==============输出结果=================
//*************************************
if (is==true)
printf("%i在有序队列中\n", find);
else
printf("%i不在有序队列中\n",find);
}
return 0;
}