首页 > 其他分享 >二分查找(折半查找)函数与非函数写法代码介绍及其优缺点 C语言

二分查找(折半查找)函数与非函数写法代码介绍及其优缺点 C语言

时间:2024-11-13 19:48:18浏览次数:3  
标签:折半 二分 下标 函数 查找 数组 目标值

什么是二分查找?

二分查找也叫折半查找  在有序的数组中查找目标的方法 需要借助中间元素与目标值的比较 来逐步缩小范围 一直到找到目标元素或者不存在为止

查找的步骤↓

1确定左右端点的下标值(注:数组下标从0开始)

2计算中间下标位置

3比较中间下标位置的数组值与目标值的大小(大于目标值继续,小于目标值继续,等于目标值找到了不需要继续)

4不断重复直至不存在或者找到了

函数代码展示↓

注意:left right mid 都是下标

9bbac02ff880455f8109c0b9671da1e7.png

e23a3bd800154a21bd273b8992094a1e.png

 运行结果↓

285b0aaba49f46a6bf0fd47ee94cf4a2.png

 补充一下:当找不时 while循环left>right不会进入循环则直接就会返回值 通过if判断找不到 还有上面计算数组长度的公式可以记一下

下面是非函数写法↓

c22c5445fc724dd0975b53859ca3e024.png

 运行结果↓

dd5d2397e1424a229249ca730c2b06aa.png

 二分查找优点:

可以在一个有序的数组中很快的定位一个数

二分查找的缺点:

1要查找的数组是有序的

2元素重复时 结果不唯一 需要另行计算处理

3一次只能查找一个

4数组大小固定

 

 

标签:折半,二分,下标,函数,查找,数组,目标值
From: https://blog.csdn.net/2402_87940708/article/details/143750333

相关文章

  • C++ 移动构造和拷贝构造函数匹配
    既有拷贝构造又有移动构造这个比较好理解,普通的函数匹配规则就可以。右值移动,左值拷贝。——《C++Primer》P477我们不能隐式地将一个右值引用绑定到一个左值。有拷贝构造但没有移动构造这种情况,右值也会被拷贝。如果一个类没有移动构造函数,函数匹配规则保证该类型的对象......
  • 多项式乘幂函数之和 2
    H4.2.1.8.多项式乘幂函数之和2\(n,k\)都是给定数,没什么区别记\(S_k=\sum_{i=1}^ni^kp^i\)\(p=1\)时\(S_k\in\Theta(n^{k+1})\)\(p<1\)时\[\begin{aligned}(1-p)S_k&=\sum_{i=1}^n\left(i^k-(i-1)^k\right)p^i-n^kp^{n+1}\\&=\sum_{i=1}^n\left(......
  • javaScript对象函数初相识
    1.1、对象初相识1.1.1、对象的初识1.1.1.1、对象的定义现实生活中,万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如一本书,一辆汽车,一个人可以是“对象”,一个数据库,一张网页,一个与远程服务器的连接也可以是“对象”。例子:明星、女朋友、班主任、苹果、手机周星驰......
  • 用函数实现模块化程序设计四
    数组作为函数参数调用有参函数时,需要提供实参,实参可以是常量、变量或表达式数组元素的作用与变量相当,一般来说,凡是变量可以出现的地方,都可以用数组元素代替,因此,数组元素也可以用作函数实参,其用法与变量相同,向形参船体数组元素的值。此外,数组名也可以作实参和形参,传递的是数组第......
  • 极速启动,函数计算弹性降本能力再升级
    作者:墨飏在数字化转型的大潮中,云计算成为推动创新和优化业务流程的关键力量。作为阿里巴巴集团的核心产品之一,函数计算(FunctionCompute)引领着Serverless计算的新时代。本文将深入探讨函数计算如何通过技术革新实现提效降本,以及其在AI业务、数据处理和Web应用等多个领域的......
  • 函数递归详细知识点
    函数递归的基本概念函数递归是指在函数体内部直接或间接地调用该函数本身的编程技术。递归通常用于解决可以分解为更小、更相似子问题的问题,尤其适用于数据结构如树、图、链表等的操作,以及数学问题如斐波那契数列、阶乘计算等。递归的基本结构递归函数通常包含两个关键部分:......
  • C++函数传递引用或指针
    常见变量用法下面通过例子分别展示传递值、字符串、数组的用法示例代码#include<iostream>#include<string>//函数接受一个整数的引用和一个整数的指针voidmodifyValue(int&refValue,int*ptrValue){refValue=100;//通过引用修改值std::cout......
  • 【Java Web】JSTL及其核心库介绍 JSTL函数
    文章目录JSTL介绍核心库表达式控制\<c:out>\<c:set>\<c:remove>\<c:catch>流程控制\<c:if>\<c:choose>循环标签\<c:forEach>URL标签\<c:import>\<c:url>\<c:param>\<c:redirect>格式化JSTL函数JSTL介绍JSTL(JavaSer......
  • C题目:写一个函数,计算一个字符串的长度。在main函数中输入字符串,并输出其长度。
    题目要求如下:写一个函数,计算一个字符串的长度。在main函数中输入字符串,并输出其长度。提示:(1)定义intlength(char*p)函数,统计指针变量p指向的字符数组中的字符个数,返回其字符个数。(2)在main函数中,输入一个字符串,存入字符数组,调用length函数,求出字符串的长度,输出其长度值。代......
  • C小题目:输入10个整数,将其中最小的数与第1个数对换,将最大的数与最后一个对换。要求写3
    题目要求如下:输入10个整数,将其中最小的数与第1个数对换,将最大的数与最后一个对换。要求写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。提示:(1)定义voidinput(int*p)函数,用来输入10个整数,存放到指针变量p所指向的数组中;(2)定义voidmax_min_value(int*p)函数,在指针变量p所指......