Java二分法
二分查找题目
输入一个 n 个元素升序的整型数组 nums , 再输入一个目标值 target 。 编写一个方法: 使用二分法, 查找 nums 中的 target, 如果target存在, 则返回在数组中的下标, 否则返回 -1。数组上任意一点的值:nums[i]
二分法查找流程
第一步
在数组中,取得中间下标。 中间下标=(最大下标-最小下标)/2+最小下标第二步
判断中间下标的值和目标值target是否相等。
相等
直接返回中间下标中间下标的值小于目标值target
缩小查找范围,将最小下标变为中间下标+1中间下标的值大于目标值target
缩小查找范围,将最大的下标变为中间下标-1代码示例
package com.binary;
public class Binary {
//创建二分查找的方法,入参1:nums、入参2:target
public int search(int[] nums,int target){
int low=0;
int high=nums.length-1;
while(low<=high){
int mid=(high-low)/2+low;
int num=nums[mid];
if(num==target){
return mid;
} else if(num>target){
high=mid-1;
} else {
low=mid+1;
}
}
return -1;
}
public static void main(String[] args) {
int[] nums={1,2,3,4,5};
int target=2;
int result=new Binary().search(nums,target);
System.out.println("应该输出的下标值为:1,实际输出的下标值为:"+result);
}
}
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!