题目标题:
卫星定位
题目描述:
编写程序,对一个已经排好序的数组,输入一个元素。将该元素在数组中的位置索引出来(折半查找)。例如原数组为:1 2 6 7 9,输入待查找的元素7,则查找结果为4,如果没有找到该元素,则输出-1;
输入描述:
输入包含两部分,第一部分先输入n,表示数组中元素数,接着输入n个已经排序好的数,数组最大个数n为20,第二部分为待查找的数据
输出描述:
待查找的元素位置
样式输入:
5
1 2 6 7 9
7
样式输出:
4
#define M 25
#include<stdio.h>
int main()
{
static int a[25];
int i,n,low,mid,high,flag,x;
scanf("%d",&n);
low=0;
high=n-1;
flag=-1;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
while(low<=high) /*
老师上课讲的经典算法*/
{
mid=(low+high)/2;
if (x==a[mid])
{
flag=mid+1;break;
}
else if
(x>a[mid])
low=mid+1;
else high=mid-1;
}
printf("%d",flag);
return 0;
}