龙空技术网

ChatGPT教你写 C++ 代码-二分查找

Fun客船 144

前言:

眼前各位老铁们对“c语言折半查找”大体比较关怀,大家都想要了解一些“c语言折半查找”的相关资讯。那么小编同时在网络上搜集了一些有关“c语言折半查找””的相关内容,希望姐妹们能喜欢,同学们一起来学习一下吧!

#c语言#

#与ChatGPT的有趣对话#

你觉得 GPT 写的代码有问题吗?欢迎留言讨论

Q:使用 C++ 实现二分查找

A:以下是使用 C++ 实现二分查找的示例代码:

#include <iostream>#include <vector>int binarySearch(std::vector<int>& nums, int target) {    int left = 0;    int right = nums.size() - 1;    while (left <= right) {        int mid = (left + right) / 2;        if (nums[mid] == target) {            return mid;        } else if (nums[mid] < target) {            left = mid + 1;        } else {            right = mid - 1;        }    }    return -1;}int main() {    std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};    int target = 6;    int index = binarySearch(nums, target);    if (index != -1) {        std::cout << "Target found at index " << index << std::endl;    } else {        std::cout << "Target not found" << std::endl;    }    return 0;}

在上面的代码中,我们定义了一个 binarySearch 函数,它采用一个整数数组和一个目标值作为输入,并返回目标值在数组中的索引(如果存在),否则返回 -1。

函数中使用两个变量 left 和 right 分别表示数组的左边界和右边界。在每次循环中,计算数组中间的索引 mid,并将其与目标值进行比较。如果中间值等于目标值,则返回中间索引。如果中间值小于目标值,则将 left 更新为 mid + 1,因为目标值在右侧。如果中间值大于目标值,则将 right 更新为 mid - 1,因为目标值在左侧。循环继续进行,直到 left 大于 right,表示目标值不在数组中。

在主函数中,我们定义了一个整数数组和目标值,并调用 binarySearch 函数。如果函数返回值不等于 -1,则打印目标值在数组中的索引。否则,打印 "Target not found"。

标签: #c语言折半查找