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;
}

运行结果截图

在这里插入图片描述

注意:

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

目录
相关文章
|
5月前
|
算法 程序员 数据处理
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
|
5月前
|
存储 算法 搜索推荐
C语言与人生:数组交换和二分查找
C语言与人生:数组交换和二分查找
|
10天前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
|
4月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
4月前
|
C语言
C语言----数组----二分查找
C语言----数组----二分查找
|
4月前
|
C语言
C语言--通过函数实现二分查找
C语言--通过函数实现二分查找
|
5月前
|
C语言 数据安全/隐私保护
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
43 0
|
5月前
|
算法 C语言
【C语言】二分查找
【C语言】二分查找
|
5月前
|
C语言
C语言——二分查找(在万千之中快速找到你)
C语言——二分查找(在万千之中快速找到你)
35 0
|
5月前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现