题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
输入格式
两行。第一行输入两个整数n,,k,n表示数组的长度,k表示要查找的目标值;第二行输入一个长度为n的有序数组。
输出格式
一行,输出kk的索引,如果没有找到k,则输出-1。
样例
样例输入 1
10 6
1 2 3 4 5 6 7 8 9 10
样例输出 1
5
样例输入 2
4 5
1 3 5 6
样例输出 2
2
#include<stdio.h>
int BinarySearch(int k,int a[],int n)
{
int left,right,mid;
left=0;
right=n-1;
while(left<=right)
{
mid=(left+right)/2;
if(k<a[mid])
{
right=mid-1;
}
else if(k>a[mid])
{
left=mid+1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int n,k,t;
scanf("%d%d",&n,&k);
int a[1000000];
for(int i=0;i<n;i++) {
scanf("%d",&a[i]);
}
int ans=-1;
t=BinarySearch(k,a,n);
if(t==-1){
printf("%d",ans);
}
else {
printf("%d\n",t);
}
return 0;
}