/*对于一个有序数组,输入一个元素。
将该元素在数组中的位置索引出来(折半查找)。
例如原数组为:1 2 6 7 9,输入待查找的元素如果没有找到则返回-1。*/
#include<stdio.h>
int main(void)
{
int n,i,j,a[20],k,temp;
scanf("%d",&n); //输入数组元素的个数
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入已经排好序的数组
scanf("%d",&k); //输入待查数字
i=0; //i,j为前后两个标兵
j=n-1;
while(i<=j)
{
temp=(j+i)/2;//中间下标
if(a[temp]==k)
{
printf("%d",temp+1);//找到后break,输出当前位置
break;
}
else if(k<a[temp])
j=temp-1;//要在a[i....temp-1]中查找
else
i=temp+1;//要在a[temp+1..j]中查找
}
if(i>j) //若查找不成功则返回-1
printf("%d",-1);
return 0;
}