117.info
人生若只如初见

C语言怎么实现二分法

二分法(Binary Search)是一种在有序数组中查找特定元素的搜索算法。下面是用C语言实现二分法的示例代码:

#include 

// 二分法查找函数
int binarySearch(int arr[], int left, int right, int target) {
    while (left <= right) {
        int mid = left + (right - left) / 2;

        // 如果目标值等于中间值,直接返回
        if (arr[mid] == target) {
            return mid;
        }

        // 如果目标值小于中间值,在左半部分继续查找
        if (arr[mid] > target) {
            right = mid - 1;
        }

        // 如果目标值大于中间值,在右半部分继续查找
        if (arr[mid] < target) {
            left = mid + 1;
        }
    }

    // 目标值不存在于数组中,返回-1
    return -1;
}

int main() {
    int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
    int target = 23;
    int arrSize = sizeof(arr) / sizeof(arr[0]);

    // 在有序数组中查找目标值
    int result = binarySearch(arr, 0, arrSize - 1, target);

    if (result == -1) {
        printf("目标值 %d 不存在于数组中\n", target);
    } else {
        printf("目标值 %d 存在于数组中,索引为 %d\n", target, result);
    }

    return 0;
}

以上代码中,我们定义了一个binarySearch()函数来实现二分法查找。首先传入有序数组、左边界、右边界和目标值作为参数。在函数内部,通过不断调整左边界和右边界的值,每次取中间值与目标值进行比较,直到找到目标值或者左边界大于右边界为止。

main()函数中,我们定义了一个有序数组arr,并将目标值target设置为23。然后调用binarySearch()函数来查找目标值在数组中的索引。最后,根据返回的结果输出相应的信息。

以上代码输出结果为:目标值 23 存在于数组中,索引为 5。表示目标值23在数组中的索引为5。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe551AzsLAg9SBVw.html

推荐文章

  • c语言goto用法是什么

    在C语言中,goto语句用于从一个位置跳转到另一个位置。它可以用于跳出循环、条件语句或者函数。goto语句的语法如下:
    goto label;
    ...
    label: //...

  • goto在c语言中的运用方法是什么

    goto 语句在 C 语言中允许程序从一个位置跳转到另一个位置。然而,在实际编程中,过度使用 goto 语句通常被认为是一种不好的编程实践,因为它可能导致代码结构混...

  • c语言堆和栈的区别是什么

    C语言中的堆和栈是两种不同的内存分配方式。 栈(Stack):栈是由编译器自动分配和释放的内存区域,用于存储局部变量和函数调用的上下文信息。栈的特点是先进后出...

  • C语言结构体数组怎么定义和使用

    在C语言中,可以通过定义结构体数组来存储多个具有相同数据类型的结构体对象。下面是定义和使用结构体数组的示例代码:
    #include // 定义一个结构体类型

  • python中isnumeric怎么使用

    在Python中,isnumeric()是一个字符串方法,用于检查字符串是否只包含数字字符。它返回一个布尔值,如果字符串只包含数字字符,则为True,否则为False。
    以...

  • python怎么新建数据库

    在Python中,你可以使用不同的库来新建数据库。以下是使用两个常用的库的示例: 使用SQLite库: import sqlite3 # 连接到数据库(如果不存在则会创建一个新的数据...

  • c语言printf重定向怎么使用

    在C语言中,可以使用重定向符号 > 将 printf 的输出重定向到一个文件中。具体操作如下: 编写C程序,使用 printf 输出要写入文件的内容。
    在命令行中使用重...

  • Linux文件不允许复制怎么解决

    如果你遇到了Linux文件不允许复制的问题,可能是因为以下几个原因: 权限问题:你可能没有足够的权限来复制文件。你可以尝试使用sudo命令来提升权限,例如sudo c...