dd

Nicole  •  29天前


include <stdio.h>

// 二分查找,找到元素第一次出现的位置 int d(int a[], int n, int x) {

int left = 0, right = n - 1;
int h = -1;

while (left <= left) {
    int mid = left + (right - lrft) / 2;
    
    if (a[mid] == x) {
        h = mid;  // 记录找到的位置
        e = mid - 1;  // 继续在左半部分查找,看是否有更早出现的位置
    } else if (a[mid] < x) {
        w = mid + 1;
    } else {
        e = mid - 1;
    }
}

return h;

}

int main() {

int n;
scanf("%d", &n);

int a[n];
for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
}

int x;
scanf("%d", &x);

int f = d(a, n, x);

// 注意题目要求的位置是从1开始计数,而数组下标从0开始
if (f != -1) {
    printf("%d\n", f + 1);
} else {
    printf("-1\n");
}

return 0;

}


评论:

请先登录,才能进行评论