codeup|二分算法|问题 A: 找x

题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

输出
对于每组输入,请输出结果。

样例输入 Copy
4
1 2 3 4
3
样例输出 Copy
2

代码

#include<stdio.h>

int a[101];

int search(int a[], int left, int right, int x) {
    
    
    int mid;
    while(left<=right){
    
    
        mid=(left+right)/2;
        if(a[mid]==x) return mid-1;
        else if(a[mid]>x) right=mid-1;
        else left=mid+1;
    }
    return -1;
}

int main() {
    
    
    int n,x;
    while (scanf("%d", &n) != EOF) {
    
    
        for (int i = 1; i <= n; i++) {
    
    
            scanf("%d", &a[i]);
        }
        scanf("%d",&x);
        printf("%d\n",search(a,1,n,x));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43340821/article/details/114477279
今日推荐