酷代码 AI
菜单
服务商

二分查找:在有序数字中寻找目标数字的代码实现

以下是完整的代码实现: ```cpp #include <iostream> using namespace std; int a[100005], n, k, l, r, mid, ans; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } cin >> k; l = 1; r = n; ans = n + 1; // 二分查找循环条件 while (l <= r) { mid = (l + r) / 2; // 当a[mid]等于k时 if (a[mid] == k) { ans = mid; break; } // 当a[mid]小于k时 else if (a[mid] < k) { l = mid + 1; } // 当a[mid]大于k时 else { r = mid - 1; } } cout << ans; return 0; } ``` ### 代码解释: - **输入部分**:首先读取数字的个数`n`,接着读取`n`个数字存储在数组`a`中,最后读取要查找的数字`k`。 - **二分查找**: - 初始化左右边界`l`和`r`分别为 1 和`n`,并将`ans`初始化为`n + 1`,表示未找到时的默认结果。 - 在`while`循环中,计算中间位置`mid`。 - 如果`a[mid]`等于`k`,则将`ans`更新为`mid`并跳出循环。 - 如果`a[mid]`小于`k`,说明目标数字在右半部分,更新左边界`l = mid + 1`。 - 如果`a[mid]`大于`k`,说明目标数字在左半部分,更新右边界`r = mid - 1`。 - **输出结果**:最后输出`ans`。 ######[AI问答 | 519点数解答 | 2026-05-31 13:51:34]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]