C语言二分法是什么意思?(C语言二分法查找函数)

二分法(又称折半查找法)是一种在有序数组中查找目标值的高效算法

C语言二分法是什么意思?(C语言二分法查找函数)

以下是使用C语言实现的二分法查找函数:

#include <stdio.h>

int binary_search(int arr[], int n, int target) {
    int left = 0;
    int right = n - 1;
    int mid;

    while (left <= right) {
        mid = left + (right - left) / 2;

        if (arr[mid] == target) {
            return mid; // 目标值已找到,返回索引
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return -1; // 目标值不存在,返回-1
}

int main() {
    int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 11;

    int result = binary_search(arr, n, target);

    if (result != -1) {
        printf("元素在数组中的索引为 %d/n", result);
    } else {
        printf("元素在数组中不存在/n");
    }

    return 0;
}

在这个例子中,binary_search 函数接收一个有序整数数组、数组长度以及目标值作为参数。

函数通过不断将搜索范围缩小一半来寻找目标值,直到找到目标值或搜索范围为空。

如果找到目标值,则返回其在数组中的索引;否则返回-1。

main 函数中定义了一个有序整数数组 arr 和一个目标值 target,调用 binary_search 函数来查找目标值在数组中的位置,并输出结果。

版权声明

1 本网站名称:诺言博客
2 本站永久网址:https://nuoyo.cn
3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长 QQ2469329338进行删除处理。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7 如无特别声明本文即为原创文章仅代表个人观点,版权归《诺言》所有,欢迎转载,转载请保留原文链接。

给TA打赏
共{{data.count}}人
人已打赏
数据库运维

如何在Linux Mint上安装GNOME桌面环境

2023-9-13 0:00:27

数据库运维

密码学精讲:对比对称加密与非对称加密算法的区别

2023-9-13 0:00:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索