通过用户输入的数组利用二分查找判断索引位置

在数组中二分查找指定的数----时间复杂度O(log N)Java解法 二分查找----时间复杂度O(logN)O(log N)O(logN) 题目描述 给定15个按从大到小已经有序的整数,将其放在一个数组中。另外输入一个整数,要求使用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出“NO”。 输入 第一行有15个整数,即15个从大到小已有序的原始整数。 第二行有一个整数,表示需要使用折半查找法查找的元素。 输出 如果查找到了输入的整数,则输出此... 阅读详情

package test;

import java.util.Arrays;
import java.util.Scanner;
/**

  • 二分查找

  • 通过用户输入的数组以及用户需要查询的数组值判断索引位置

  • */
    public class BinarySerach {

    public static int binarySearch(int arr[] ,int key) {

     int start=0;
     int end=arr.length-1;
     while(start<=end) {
     	//此行代码等价于  int mid=(start+end)/2
     	int mid=(start+end)>>>1;
     	if(arr[mid]==key) {
     		return mid;
     	}else if(arr[mid]<key) {
     		start=mid+1;
     	}else {
     		end=mid-1;
     	}
     }
     return -1;
    

    }
    public static int [] sort(int [] arr) {

     Arrays.sort(arr);
     return arr;
    

    }
    public static void main(String[] args) {

     Scanner sc=new Scanner(System.in);
     System.out.println("请输入数组大小:");
     int size=sc.nextInt();
     int arr[]= new int[size];
     System.out.println("请输入数组元素:");
     for(int i=0;i<arr.length;i++) {
     	int aa=sc.nextInt();
     	arr[i]=aa;
     }
     //由于二分查找需要有序数组 所以先对数组进行排序
     int []arr1=sort(arr);
     for(int x:arr1) {
     	System.out.print(x+"  ");
     }
     System.out.println();//控制格式
     System.out.println("请输入一个数组中的元素:");
     int key=sc.nextInt();
     int c=	binarySearch(arr1,key);
     if(c!=-1) {
     	System.out.println("元素值所在数组的索引位置为:"+c);
     }else {
     	System.out.println("需要查询的元素不存在!");
     }
    

    }
    }
    在这里插入图片描述
    在这里插入图片描述

使用二分法判断用户输入的整数是否在数组中 【代码】使用二分大判断用户输入的整数是否在数组中。 阅读详情

相关推荐

QT日志输出终极指南:从qDebug到qFatal的完整文件记录方案

本文深入探讨了QT日志系统的企业级文件记录方案,从基础的qDebug、qWarning、qCritical、qFatal等宏的使用,到构建自定义消息处理器、实现异步写入、分级存储、日志轮转及性能监控等高级功能。旨在帮助开发者构建一个稳定、高效且易于维护的专业级日志管理架构,适用于桌面应用、嵌入式系统及服务端程序。

ik678901234的博客 909

数组 —— 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。你可以假设数组中无重复元素。

№沐栀的博客 953

Ubuntu关闭更新提醒的三层控制方法:从GUI到APT配置

Linux系统更新机制本质上是包管理器(APT)驱动的自动化运维流程,其核心原理在于分离‘元数据刷新’、‘安全补丁安装’和‘用户通知’三个职能。这种分层设计既保障了基础安全性,又为系统管理员提供了策略定制空间。技术价值体现在提升生产环境稳定性、规避未经验证的内核/驱动升级风险,并支持ROS、Blender渲染、工业控制等对时序敏感的应用场景。本文聚焦Ubuntu系统入门教程中高频需求——科学关闭软件更新提醒,覆盖Ubuntu 20.04及LTS版本的GUI设置、systemd服务禁用与APT配置修改三大实操

weixin_29698641的博客 392

java算法之----二分查找找到全部索引

1. 首先编辑一组数据, 和待查找的数据   注: 二分查找最好是先排序, 这里是升序排序        数组中有可能有多个相同数据, 所以创建一个集合用来存放已经找到的索引      将参数传进方法内, 接下来实现方法:  public static void main(String[] args) { int[] arr = {1,2,3,3,3,6,8}; ...

txd751466382的博客 504

使用Termux在Android设备上编译运行SpecCPU2006

SPEC2006搭配Termux,竟然还能这么玩?!

菜菜的菜园子 2959

YOLO系列专栏(五):YOLO26 模型部署实战 | 从训练完成到落地应用(CPU/GPU/移动端)

训练好的YOLO26模型,本质上是一个权重文件(.pt格式),无法直接在实际场景中使用——不同应用场景需要不同格式的模型(如ONNX、TensorRT、TFLite),不同设备(CPU/GPU/移动端)的部署方式也截然不同。在保证模型精度基本不变的前提下,最大化提升推理速度,适配不同硬件设备。如果部署不当,会出现以下问题:❌ 推理速度慢:CPU部署单帧推理耗时超过100ms,无法满足实时检测需求(如监控、自动驾驶);❌ 模型格式不兼容:直接使用.pt权重文件,无法在移动端、嵌入式设备上运行;

qq_36130719的博客 631

搜索插入位置 ---- Java(二分查找)

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2示例2: 输入: [1,3,5,6], 2 输出: 1示例 3: 输入: [1,3,5,6], 7 输出: 4示例 4: 输入: [1,3,5,6], 0 输出: 0 public static int searchInsert(int[] nums, int target.

WaNgLu:)的博客 682

基于 STM32 的便携式肌电信号采集与疲劳度评估系统设计与实现

本系统以 STM32 单片机为核心控制器,通过肌电电极采集人体骨骼肌表面的 sEMG 信号,经仪表放大、滤波、AD 采样后送入 MCU 进行时域 / 频域特征提取,利用 RMS(均方根)、MPF(中位频率)、MF(平均频率)等指标实时评估肌肉疲劳状态,最终通过 OLED 显示疲劳等级,并支持蓝牙上传至上位机。

weixin_42300449的博客 102

数组二分查找

二分查找:查找元素对应的索引 前提:数组有序 注意事项:如果数组无序,就不能使用二分查找。因为数组无序,而我们进行了排序,此时排序的时候已经改变了原始的元素索引 实现代码如下 public static void main(String[] args) { int[] arr = {11,22,33,44,55,66,77}; //初始化索引和要查找的元素 ...

汐小旅Shiory 290

【华为OD机试真题】7、字符串筛选排序 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引 如果有重复字母则输出字母的最小位置索引

KJ.JK 2266

深入理解 DDR5 Bank Group 与并行调度机制

Bank Group架构和并行调度机制,是DDR5性能跃升的核心秘密!理解它们才能写出高效调度程序,设计出性能强劲又稳定的DDR5系统。🎯记住:Bank Group不是简单的分组,而是高速并行的“魔法钥匙”,巧用它,你的DDR5设计将爆发惊人性能!

weixin_43199439的博客 311

查找元素在数组内的位置

判断查找的元素是否是中间元素,如果不是判断值的大小,如果大的话则从后半段查找,再比较大小,大于则继续往后比较,小的话则确定元素的位置,小于中间值时从前半段查找,跟大于中间值一样都是比较大小不过有一点要注意,小于的时候要从后往前比较,且小于比较值得时候才往前比较再确定位置。//比较,如果输入数值大于中间值,在后半部分找,小于中间值,在前半部分找。首先要初始化获取数组的起始位置和终止位置,再计算最开始的mid值,并得到中间值的索引。//把mid的值不等于mid作为循环条件,不能确定循环闪数,用while。

m0_71854786的博客 1007

基于simulink的能量管理策略的场景实例:混合动力电动汽车(HEV)的能量回收与分配策略

本文以混合动力电动汽车(HEV)为研究对象,通过Simulink建模详细演示了能量管理策略的设计与实现。内容涵盖HEV系统架构、核心组件工作原理,并分步骤指导搭建车辆动力学模型、动力系统组件模型和基于规则的能量管理策略。重点分析了制动能量回收与功率分配机制,通过仿真验证了逻辑门限策略在提升燃油经济性和维持电池SOC平衡方面的有效性。文章最后展望了更高级控制策略的应用前景,为HEV能量优化提供了完整的仿真研究框架。

xiaoheshang_123的博客 212

二分法查找数组索引

题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 2 输出: 1 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 解题思路 1.先判断目标值是否在数组中, 2,如果不在,由于数组是一个排序数组,所以可以直接比较目标值ta

自学前端的小菜鸡的博客 782

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

3.3 二分查找专题: LeetCode 35. 搜索插入位置

LeetCode 35. 搜索插入位置算法对比分析

shuibuxingaaa的博客 536

温度PID控制PLC程序

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

【LeetCode-算法专栏】二分查找

算法是程序员的内功,掌握算法不仅能帮助你在面试中过关斩将,赢取 Dream Offer

IT邦德 2899

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

力扣-->#34. 在排序数组中查找元素的第一个和最后一个位置-->数组-中等(二分查找)

34. 在排序数组中查找元素的第一个和最后一个位置 题目描述: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回[-1, -1]。 进阶: 你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例2: 输入:nums = [5,7,7,8,8,10], ...

weixin_46486508的博客 341

数组练习题之 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-insert-position 著作权归领扣网络所有。商业转载请联系官方...

wangxulei123的博客 272

Leetcode刷题java之852. 山脉数组的峰顶索引

执行结果: 通过 显示详情 执行用时 :0 ms, 在所有Java提交中击败了100.00%的用户 内存消耗 :42.8 MB, 在所有Java提交中击败了46.09%的用户 题目: 我们把符合下列属性的数组A称作山脉: A.length >= 3 存在 0 < i< A.length - 1 使得A[0] < A[1] < ... A[i...

逆水行舟,不进则退 548

leetcode35.搜索插入位置/二分查找

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 来源:力...

yyf_blog 415

利用中间变量查找

/重复比较arr[mid]和 num,并且重新计算start_index或者是end_index,重复的编程用循环。//比较,如果输入数值大于中间值,在后半部分找,小于中间值,在前半部分找。//把mid的值不等于mid作为循环条件,不能确定循环闪数,用while。//计算最开始mid值,通过开始索引和终止索引得到中间值的索引。//初始化获了数组的终止位置,测试时最后来个元素有问题。//退出循环条件,等于就退出,一直没有找到,退出。//判断所查找的元素是否是中间的元素。//用户输入一个查找的数。

2302_80648032的博客 88

二分查找(Python3)

它接受一个待查找的整数值和一个已经有顺序的整数数组作为参数。如果待查找的整数值存在于数组中,则返回它在数组中的索引,否则提示该数值不在数组中。print("有序数组中的二分查找") key=int(input("请输入您要查找的整数:")) c=[10,11,12,17,19,21,22,24,32,38,49,51,66,78,90] def BinarySearch(key,c):     l...

暳暳小星的博客 5592

035.搜索插入位置

这道题仍然考察的是二分查找法,由此可见二分查找法的重要性。去 B站搜了一下,这个 up 讲的不错,推荐大家看一下。数据结构合集 - 折半查找(二分查找). - 力扣(LeetCode)

qq_64948664的博客 1079

吃透二分查找—— LeetCode 第 33、34、35 题记

昨天没能完成 34,今天来补上。恰好第 35 题也是二分查找算法的应用,放到一起来记录。首先看下二分查找算法的概念:❝二分查找也称折半查找(Binary Search),它是一种效率较高...

TEDxPY 281

C语言一维数组字符串操作与二分查找精要

本文总结了C语言中二分查找和字符串操作的核心知识。二分查找部分演示了在有序数组中快速定位元素的经典算法,强调其O(logn)的时间复杂度优势。字符串操作部分详细讲解了字符数组的存储特性、输入函数对比(gets、scanf、fgets)及安全处理技巧,并提供了字符串大小写转换、字符统计等实用代码示例。特别提醒使用strcpy时需注意目标数组空间问题,避免内存越界。这些基础概念和注意事项对C语言编程至关重要,尤其适合初学者系统掌握字符串处理的基本方法。

writer__的博客 1184
上一篇: 一个简易java随机点名器
下一篇: SSM 简易的网页登陆 (练手用)
倾听心跳的频率灬
博客等级 码龄8年 13粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值