首页 > 其他分享 >C语言二分查找法新手

C语言二分查找法新手

时间:2023-10-28 20:32:04浏览次数:27  
标签:二分 折半 C语言 关键字 查找 数组 新手 子表 我们

如果有一天我们想通过输入一个数去查找这个数在数组的下标。我们应该怎么去实现呢?

首先我们肯定要创建一个数组组,我们知道数组的数组是从零开始的,

首先呢,我们要了解二分查找法可以在百度里面查到。

二分查找也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。查找过程首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

以上是什么意思呢?通俗来说我们利用数组中间元素进行比较。这样呢,就可以节省一半的效果。比如我们要在一个10的数组中去查询下标是6的数据

我们可以直接将10折半这样计算机就可以节省一半的计算效率,

我们可以利用我们所计算的中间这个数所对应的下标元素。和我们所要找的那个数进行比较。然后。通过左边或者右边的加减,来实现逐步靠近我们所要查到的那个数。

于是我们就可以写出下面这样一段代码。

C语言二分查找法新手_升序

下面是我自己画的图,不要介意,不要介意。~(^з^)-☆

C语言二分查找法新手_升序_02

如果有用就请点点赞

谢谢


标签:二分,折半,C语言,关键字,查找,数组,新手,子表,我们
From: https://blog.51cto.com/u_16237653/8072922

相关文章

  • C语言入门之数组之一维和二维----小白
    今天的介绍C语言数组的概念。数组的分类一维数组和多维数组。一维数组和二维数组,这是我们今天主要介绍的两种。一数组的概念。数组是一组相同类型元素的集合,我们在前面介绍了数据类型。他可以将多个相同类型的数据,放到一起。1.数组的数据不能为0,至少要放一个元素。或者对他进行初始......
  • c语言学习的第三天
    intmain()//{// externintg_val;// printf("g_val=%d\n",g_val);//extern--申明外部符号+// return0;//static修饰全局变量改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法在使用了//static修饰函数改变了函数的链接属性 //st......
  • 学习笔记:二分图
    二分图引入二分图又被称为二部图。二分图就是可以二分答案的图。二分图是节点由两个集合组成,且两个集合内部没有边的图。换言之,存在一种方案,将节点划分成满足以上性质的两个集合。性质如果两个集合中的点分别染成黑色和白色,可以发现二分图中的每一条边都一定是连接一个黑色......
  • 【每日例题】蓝桥杯 C语言 凯撒加密
    凯撒加密题目题目描述给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是—种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即α变为d,b变为e,·,w变为z,Z变为a,g变为b,z变为c。输入描述输入格式:输入一行,包含一个单词,单词中只包含小写英文字母,单词中......
  • 数据结构与算法(LeetCode)第一节:认识复杂度,对数器,二分法与异或运算
    一、认识复杂度1.评估算法优劣的核心指标:时间复杂度:当完成了表达式的建立,只要把最高阶项留下即可。低阶项都去掉,高阶项的系数也去掉,记为O(去掉系数的高阶项);​ 时间复杂度是衡量算法流程的复杂度的一种指标,该指标只与数据量有关,与过程之外的优化无关常见的时间复杂度(从好到坏)O......
  • 【C语言Coding】第二十八天
    【例题1】2744.最大字符串配对数目-力扣(LeetCode)intmaximumNumberOfStringPairs(char**words,intwordsSize){intans=0;for(inti=0;i<wordsSize-1;i++){for(intj=i+1;j<wordsSize;j++){//字符串长度不相等intlen1=st......
  • C语言小案例
    1.从键盘输入3个实数,输出其中的最大值、最小值和平均值#include<stdio.h>intmain(){ doublenumber[3]; doublemax,min,average=0; inti; printf("Pleaseinputthreenumbers:"); for(i=0;i<3;i++){ scanf("%lf",&number[i]); } max=min=number[0]; ......
  • 关于 wqs 二分的几何意义的思考
    我们知道,wqs二分是通过二分斜率,通过找到切凸包的切点来寻找答案(至少我目前写的简单题是这样的)。那么所谓切凸包的几何意义是什么?我们以LGP5633最小度限制生成树为例。对于样例,我们设\(f(x)\)为节点\(s\)恰为\(x\)度的情况下最小生成树的权值,画出凸包。由于偏移量是......
  • B站C语言第三课
    1,字符串的结束标志:’\0'//"abcdef";//'\0'-转义字符-0//0->数字0//‘0’->48//'a''b''c''0''1''2'//EOF-endoffile-文件结束标志 -1return0;2,~按(2进制)位取反1010----0101//原码--------......
  • C语言--数组
    数组:一维数组1.一维数组的创建数组是一组相同类型的元素的集合。数组的创建:数组的元素类型数组名常量表达式(指定数组的大小)type_tarr_name[const_n]数组创建的实例:#include<stdio.h>intmain(){chararr1[10];intarr2[10......