二分查找 Java和C语言

蓝桥杯实战应用【算法代码篇】-二分查找的递归解法(附python、Java、C语言、R语言和C++代码) 你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。在搜索时,首先选择一个中点,如果中点比目标值小,则往右边查找,否则,往左边查找,这样可以使每次搜索的范围减少一半。一些递归算法实现的bug,只要就来源于此。,编译器会直接用下一层递归调用的调用栈覆盖当前栈,可以将调用栈维持在很小的规模,这样通过递归调用,就可以处理大量数据了。比如:3,6,8,15,17,19。 阅读详情

针对 有序数组,可以使用更高效的二分查找。

以升序数组为例, 二分查找的思路是先取中间位置的元素, 然后使用待查找元素与数组中间元素进行比较:

  • 如果相等,即找到了返回该元素在数组中的下标
  • 如果小于,以类似方式到数组左半侧查找
  • 如果大于,以类似方式到数组右半侧查找

重点是有序数组。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

Java实现:

public static void main(String[] args) {
        int[] arr = {12, 34, 23, 45};
        System.out.println(binarySearch(arr,34));
    }

    public static int binarySearch(int[] arr,int num) {
        int left = 0;
        int right = arr.length - 1;
        while(left <= right) {
            int mid = (left + right) / 2;
            if(num < arr[mid]) {
                right = mid - 1;
            }else if (num > arr[left]) {
                left = mid + 1;
            }else {
                return mid;
            }
        }
        return -1;
    }

C语言实现:

int main()
{
	int i, k = 0;
	scanf("%d", &k);
	int arr[] = { 23,3,45,12 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		if (arr[i] == k)
		{
			printf("你要找的数是:%d", arr[i]);
		}
	}

	return 0;
}

 

 

 

【2024华为OD机试C卷】400、小明找位置 | 机试真题+思路参考+代码解析(C语言、C++、Java、Py、JS)(本题100%) 题目描述 >小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。 阅读详情

相关推荐

【华为OD技术面试手撕真题】38、二分查找 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

【华为OD技术面试手撕真题】38、二分查找 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)华为od机试真题,华为OD技术二面,华为od机考,华为od手撕真题,华为od技术二面,华为od机试,华为OD机试的高频手撕代码题,华为od八股文

KJ.JK 2540

java查找算法:二分查找(两种方式)

二分查找算法思想 二分查找针对的是一个有序的数据集合也就是数组(这也成为了二分查找的一个重要局限性),查找思想有点类似分治思想。 每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0

weixin_54046648的博客 9466

论文选题难?7种AI加持的万能选题法(全专业通用+工具实测)

AI时代学术选题新范式:7大智能方法破解研究痛点 传统选题方法面临范围失控、资料难寻、创新不足三大痛点,本文提出AI赋能的7种选题方法论: 1.现象+群体法:自动抓取热点与人群特征 2.理论+场景法:经典理论与新兴场景匹配 3.技术+问题法:前沿技术与领域痛点结合 4.对比+变量法:时空维度与变量关系分析 5.热点+理论法:事件传播与理论深挖融合 6.微调+变量法:已有选题变量置换创新 7.AI全流程法:关键要素智能迭代生成 同时警示AI使用的伦理边界,需规避虚构文献、伪造数据等风险,并提供针对本科生、研究

Conan_0728的博客 1883

【Java】和【C语言】实现一个有序数组的二分查找

Java实现二分查找、C语言实现二分查找

超烦豆先森 1493

CentOS 7升级GCC踩坑记:明明装了centos-release-scl,为啥找不到devtoolset-9-gcc-c++?

本文详细记录了在CentOS 7系统中升级GCC时遇到的`devtoolset-9-gcc-c++`不可用问题及其解决方案。通过分析`centos-release-scl`安装不完整的原因,提供了从清理残留、重新安装仓库配置到完整安装devtoolset-9工具链的全套操作指南,帮助开发者彻底解决类似环境配置难题。

weixin_29252171的博客 244

【AUTOSAR-COM】Transmission Mode 和 Transfer Property

1.COM模块的基本概念 首先在描述Transmission Mode 和 Transfer Property之前,有必要对COM模块的基本处理有一个直观的理解,我所描述的和对概念理解的也不一定完全正确。 Signal:指的是通信协议中的,一条报文中所保存的若干信号。 I-PDU:至少在COM模块中,可以理解为一条报文。 上图是在CANdb软件中编辑一个报文的Layout的界面,可以很形象的将I-PDU对等为这里的一条Message,而Signal就是需要在Message中需要摆放的Signal

tim_hoven的博客 4635

java或C语言实现二分查找(一个方法实现升序和降序,java重写binarySearch)

我们都知道,二分查找实现对某一个数与数组中间的位置进行判断,如果不是所对应的数据,则再进行这半数据查找,搜索的范围会缩小一半。前提是数组已经排序好了 时间复杂度:log2n(以2为底的对数) 但是java里的二分查找只是针对升序数组而言,于是为了方便性,我重写了对于升序和降序都能查找的代码

l1977831649的博客 721

深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系

训练整个数据集是epoch、把数据集分为多少小块就是batch,每个小块(batch)多少个数据就是batch_size,整个数据集需要训练多少轮是iteration

qq_42740834的博客 1610

二分查找——有序数组

二分查找算法的详解

一名在校大三学习JAVA 2043

Dify+firecrawl:一个超好用的网页转Markdown API,打造你的第一个能检索爬虫RAG知识库的聊天机器人

Firecrawl是一个超简单的API服务——你扔给它一个URL,它就能把整个网站(包括子页面!)的内容自动抓下来,并且转换成干净、易读的Markdown格式。不用配置网站的站点地图,不用写爬虫规则,API调一下,数据直接到手。接下来我们一起本地部署吧!

2501_91673550的博客 2992

学习STM32的CAN总线通信

在配置时,确保您启用了CAN总线功能。CAN节点是CAN总线上的一个设备,每个节点都有唯一的标识符。在CAN总线中,有两种类型的节点:CAN控制器和CAN外设。步骤2:配置CAN总线 在STM32CubeMX中,选择CAN总线模块并进行必要的配置。在CAN总线中,有两个重要的概念:CAN节点和CAN帧。步骤5:测试CAN总线通信 在成功编译和烧录代码后,您可以使用串口调试助手或其他CAN总线工具来测试CAN总线通信。步骤3:编写CAN总线通信代码 在项目的主代码文件中,我们将编写CAN总线通信的示例代码。

2401_85258012的博客 497

二分查找

<br />转自:http://baike.baidu.com/view/610605.htm?fr=ala0_1_1#3<br />二分查找<br />目录[隐藏]概述pascal源代码C语言代码Java的二分查找算法AAuto的二分查找算法 <br /><br />[编辑本段]概述二分查找法 二分查找又称折半查找,它是一种效率较高的查找方法。  【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。  【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查

hijack998的专栏 1361

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

1318

C语言:冒泡排序、`二分查找

C语言:冒泡排序C语言:冒泡排序 原理:比较两个相邻的元素,将较大的值的元素向右移1位. 每排一次序,就会少比较一次,每次循环都会找出循环元素中的最大的值最后右方。 在这里插入代码片 void b(int a[],int n) { int i,j,temp; for(i=1;i<n;i++) { for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) {//将较大的元素往后移 temp=a[j]; a[j]=a[j+1];

weixin_42569047的博客 730

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

何为二分查找(有python、java、C代码实现复制能运行)有迭代和递归两种实现

二分查找是一种在有序集合中高效查找元素的算法,通过不断将查找区间减半来定位目标值。其核心流程包括确定区间、计算中点、比较判断和重复操作,时间复杂度为O(log n)。该算法适用于有序且支持随机访问的数据结构,但不适合频繁变动的数据集。Python、Java和C提供了迭代和递归两种实现方式,其中迭代实现空间复杂度为O(1),递归实现为O(log n)。二分查找还可扩展应用于边界查找、旋转数组等复杂场景。

愿生活:送君茉莉 愿君莫离3,送君红荼 愿君荣华3,送君可乐 愿君常乐3,送君旺仔 愿君开怀5,送君阿萨姆 愿君不辛苦5 送君娃哈哈 愿君天天笑哈哈 8 1396

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python 二分查找_LeetCode基础算法题第120篇:二分查找算法

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后> 到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和> 精力有限,其他语言的实现有兴趣的朋友请自己尝试。初级难度说的差不多的时候,我打算再加点其他内容,我可能会从操作系统到协议栈,从分布式> 聊到大数据...

weixin_39528289的博客 227

【数组】leetcode704.二分查找(C/C++/Java/Js)

leetcode题解;二分法;

Eumenides_Suki的博客 590

顺序查找和二分查找算法多种编程语言实现(修订)

查找,也可称检索,是在多个信息中寻找一个特定的信息元素,在此介绍顺序查找和二分查找算法的多种编程语言实现。给出C++代码、Java代码、Python代码和JavaScript代码。

cnds123的专栏 829

leetcode704二分查找(多种语言实现)

二分查找是十分简单的算法,借助这个简单的题目,一起感受以下各种编程语言的运行效率。 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 示例 2: 输入: nums...

qq_43703430的博客 346

二分查找&删除元素

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。设置两个指针,一个指向数组头部,一个指向数组尾部。指向数组头部的不断向后遍历数组,指向数组尾部的不断向前遍历数组。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。注意head , tail指针的取值问题,如果遇到只有一个元素的数组则更加需要注意取值。元素的顺序可以改变。

qq_30189881的博客 1432

二分查找:原理与实现(C语言与Java版)

二分查找(Binary Search)是一种在有序数组中查找特定元素的高效算法。与线性查找相比,二分查找的时间复杂度为O(log n),显著提高了查找效率。本文将详细介绍二分查找的原理,并分别使用C语言和Java语言实现该算法。

ze15829163918的博客 528

多语言编程实战Java、C、Python、PHP、C#、C++实现经典算法对比

从以上实现可以看出,虽然算法逻辑完全相同,但不同语言的实现风格差异显著。C和C++作为系统级语言,更注重性能和内存控制,代码相对冗长但执行效率高。Java和C#作为现代企业级语言,语法严谨,面向对象特性丰富,代码结构清晰。Python和PHP作为脚本语言,代码最为简洁,开发效率高,但在性能上通常不如编译型语言。在实际项目中,选择何种语言实现算法,需要综合考虑项目需求、团队技能、性能要求、开发效率以及生态系统支持等因素。

a1084941734的博客 880

c++/java/python 实现二分查找

题目:寻找插入位置 给定一个已经升序排好序的数组,以及一个数target,如果target在数组中,返回它在数组中的位置。否则,返回target插入数组后它应该在的位置。 提示:输入一个整数n,以及其对应的数组A[n],最后输入target

zhu_free的博客 696

LeetCode Day1:704.二分查找

目录一、题目二、二分查找算法介绍三、思路分析四、题解1、C++2、Java3、Python4、C 1、抓取关键信息:有序数组、数组元素不重复——>二分查找的前提2、确定区间定义,明确边界条件: 二分查找一般有以下两种区间,每种区间其边界条件并不相同3、根据二分查找算法思想进行具体代码实现 2、Java 3、Python 4、C

xxz610的博客 702

重温算法和数据结构:二分查找

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一...

weixin_30838921的博客 211
上一篇: 冒泡排序(Java和C语言)
下一篇: 选择排序 Java
大干部
博客等级 码龄5年 281粉丝 54原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值