C语言二分查找(折半查找)

简介: C语言二分查找(折半查找)

运行代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(vodi)
{
    //二分查找:
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int left = 0;
    int right = sizeof(arr) / sizeof(arr[0]);
    int x = 0;
    scanf("%d", &x);
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] > x)
            right = mid - 1;
        else if (arr[mid] < x)
            left = mid + 1;
        else
        {
            printf("Find!,the subscript is %d", mid);
            break;
        }
    }
    if (left > right)
        printf("NO Find!\n");
    return 0;
}
AI 代码解读

运行结果截图

在这里插入图片描述

注意:

**当(left+right)/2大于Int的取值范围时,则会导致数据溢出,故这种写法并不是完美的,
可以将int mid = (left + right) / 2;改为:int mid=left+(right-left)/2;这样就可以完美的解决bug了!!!**
在这里插入图片描述
画一个这个图,希望帮助大家理解!

相关文章
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
134 1
【C语言】二分查找算法
【C语言】二分查找算法
103 0
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
C语言----数组----二分查找
C语言----数组----二分查找
57 2
C语言--通过函数实现二分查找
C语言--通过函数实现二分查找
58 0
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
79 0
C语言——二分查找(在万千之中快速找到你)
C语言——二分查找(在万千之中快速找到你)
83 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问