c语言:对一个已经排序的数组中的元素(无重复元素),输入目标值,输出元素对应的下标。
代码:
#include<stdio.h>
int main()
{
int n;
int a;
int left=0,right=n-1,mid=(left+right)/2;
scanf("%d",&n);
int s[n];
for(int i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
scanf("%d",&a);
while(left!=right)
{
if(s[mid]<a)
{
left=mid;
mid=(left+right+1)/2;//必须+1,否则目标值在尾部的情况不能查找成功,即mid最多只能移动到倒数第二位。
}
else if(s[mid]>a)
{
right=mid;
mid=(left+right)/2;
}
else break;
}
printf("%d",mid);
return 0;
}