首页 > 其他分享 >二分查找-C语言

二分查找-C语言

时间:2024-11-24 13:59:40浏览次数:8  
标签:二分 arr 记录 int 关键码 len C语言 查找

二分查找原理
1.使用条件:
线性表中的记录必须按关键码有序;
必须采用顺序存储。
 2.基本思想:
在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。

#include<stdio.h>// 二分查找
int main()
{
    int arr[10];
    int len;
    int target;
    printf("请输入数组元素(顺序输入):\n");
    for (int i = 0; i < 10; i++)
    {
        scanf_s("%d", &arr[i]);
    }
    printf("请输入要查找的元素:");
    scanf_s("%d", &target);
    len = sizeof(arr) / sizeof(arr[0]);
    int left = 0;
    int right = len - 1;
    int index = -1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] == target)
        {
            printf("找到了目标值%d的索引为%d", target, mid);
            index = mid;
            return 0;
        }
        else if (arr[mid] < target)
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }
    if (index == -1)
        printf("未找到目标值%d", target);
    else
        printf("找到了目标值%d的索引为%d", target, index);
    return 0;
}

标签:二分,arr,记录,int,关键码,len,C语言,查找
From: https://blog.csdn.net/huangCalm_7/article/details/143952225

相关文章

  • 扫雷游戏升级版 含递归链式展开(一次展开一片区域) 代码详细解读 C语言
    1、前言:我看了CSDN有很多小伙伴也写了扫雷小游戏但是大部分写的代码都是一次输入坐标只能展开一个位置并没有还原我们小时候最初始的游戏玩法可玩性很低 我在这用函数递归链式展开一片还原最初始游戏提高可玩性 先放效果图↓2、建议:一个程序代码的实现并不是只靠......
  • 二分试题集
    #include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#definelllonglong#definelowbit(x)((x)&(-x))#definear2array<ll,2>#definear3array<ll,3>constintN=2e5+10;constintmod=1e9+7;consti......
  • 大一机械学生自学C语言50天的历程与心得
    1、迷茫自高考结束后 直到填报志愿前我都没有找到我感兴趣的专业方向 看到身边的朋友学医学机械学生物学计算机学数学甚至是生物化学 大部分都是在高中时就展现出一定的兴趣报志愿果断填报而我为了好的就业就只好志愿全填工科类专业  也如愿以偿的被录取到......
  • LeetCode题解:29.两数相除【Python题解超详细,位运算、二分查找法、递归法】,知识拓展:位
    题目描述        给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2 。返回被除数 dividend 除以除数 div......
  • C++,Java,Python,Javascript实现二分查找算法
    二分查找算法是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,通过比较中间元素与目标值来决定是在左半部分还是右半部分继续查找,从而逐步缩小查找范围直到找到目标值或者确定目标值不存在于数组中。下面是使用C++、Java、Python和JavaScript实现二......
  • C语言嵌入式编程实战指南(二):高级技术和最佳实践
    引言在前一篇指南中,我们介绍了嵌入式系统的基础知识、C语言编程以及简单的项目开发流程。本篇将继续深入探讨高级技术主题,包括但不限于多任务编程、网络通信、硬件抽象层(HAL)的使用,以及一些实用的最佳实践建议。第一部分:高级编程技术1.1实时操作系统(RTOS)与多任务管......
  • 线段树上二分
    线段树上二分费劲学的,得单领出来说说。网上有没有多少详细文章,有例题。线段树的奇幻科技——线段树上二分-Mercury_City-博客园(cnblogs.com)这篇博客讲的好,但仍不详细。不是二分+线段树,是直接利用线段树去二分查找。从而把\(O(\log^2n)\)变为\(O(\logn)\)。基本原......
  • 用C语言写一个扫雷游戏
    如图这是我们常见的扫雷游戏的界面。为了实现扫雷游戏,我们借助一个二维的数组来实现,我们可以通过在二维数组里填充数字0来表示该处没有雷,填充1来表示该处有地雷。但是如图所示显示界面我们并不能看见此处到底是1或者0,一个数组我们不可能让其既填充0或1又让其填充别的字符来起......
  • C语言基础之m,n互换位置
    好久不见甚是想念,又是一期C语言,上一期C语言博客说我质量低,所以今天多说一些废话m.n换位,要借助第三方tt=m把m的值赋给tm=n 把n的值赋给mn=t 把t的值赋给m#include<stdio.h>#include<stdlib.h>intmain(){intm,n;printf("输入两个整数值:");scanf("%d......
  • 【Solution】用C语言代码绘制线性函数包围图
    题目:绘制左边图的众多*输出图像,函数已给出:y=1,y=-x+2n,y=x。解决方案: 思路对于原来的坐标几何图形,2<=n,y<=x<=2n-y,1<=y<=x。我们用来写C代码的函数首先要确定三角形高的范围,至少要2。将图形分隔成上下两部分。从最高的顶点到三角形高的部分,和其下面的部分。使用line......