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;
}
该程序使用二分查找法在一个无重复元素的已排序数组中寻找目标值的下标。它读取数组大小和元素,然后读取目标值,通过迭代更新左右边界并计算中间索引,直到找到目标值或确定其不存在于数组中。

被折叠的 条评论
为什么被折叠?



