Nicole • 29天前
// 二分查找,找到元素第一次出现的位置 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;
}
评论:
请先登录,才能进行评论