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

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

@TOC

运行代码:

#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了!!!**
在这里插入图片描述
画一个这个图,希望帮助大家理解!

目录
相关文章
|
21天前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
34 0
|
12天前
|
C语言 数据安全/隐私保护
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
22 0
|
15天前
|
算法 C语言
【C语言】二分查找
【C语言】二分查找
|
20天前
|
C语言
C语言——二分查找(在万千之中快速找到你)
C语言——二分查找(在万千之中快速找到你)
13 0
|
21天前
|
算法 C语言
【C语言必刷题】3.二分查找
【C语言必刷题】3.二分查找
|
21天前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现
|
21天前
|
算法 C语言
C语言之二分查找
C语言之二分查找
|
7天前
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
20 0
|
7天前
|
C语言
C语言中返回指针值的函数
C语言中返回指针值的函数
17 0
|
1天前
|
存储 API C语言
C语言函数大全--b开头的函数
【6月更文挑战第2天】本篇介绍 C语言中 b开头的函数【C语言函数大全】
14 7
C语言函数大全--b开头的函数