博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找与递归式二分查找
阅读量:4078 次
发布时间:2019-05-25

本文共 984 字,大约阅读时间需要 3 分钟。

二分查找

public class BinarySearch{

public static void main(String[] args) {

int[] arr = {1,3,2,5,6,4,7,9,8};
Arrays.sort(arr);
// TODO Auto-generated method stub
int low = 0;
int high = arr.length-1;
while(low<=high){
int mid = (low+high)/2;
if(arr[mid]==5){
System.out.println("True");
return;
}else{
if(arr[mid]<5){
low = mid+1;
}else{
high = mid-1;
}
}
}

}

}

递归实现二分查找

public class RecursiveQuery1{

        public static void f(int[] aa,int bottom,int top,int num){

int mid = (bottom+top)/2;
if(top>=bottom){
if(aa[mid]==num){//设置递归出口
System.out.println("True");
return;
}else{
if(aa[mid]<5){
f(aa,mid+1,top,num);//若当前的aa[mid]小于5那么要到右边区域中去查找 并让bottom = mid+1
}else{
f(aa,bottom,mid-1,num);//若当前的aa[mid]大于5则到左边区域中去查找 并让high = mid-1
}
}
  }
}
public static void main(String[] args) {
int[] arr = {1,3,2,5,6,4,7,9,8};
Arrays.sort(arr);//在使用二分查找前 需要对数组进行排序
// TODO Auto-generated method stub
int low = 0;
int high = arr.length-1;
f(arr,low,high,5);//查找5是否在这个数组中 
}

}

当要查询的数据量特别多时,二分查找比普通的顺序查找的效率要高的多。

转载地址:http://khsni.baihongyu.com/

你可能感兴趣的文章
VSCode使用---1、VSCode如何运行C++代码
查看>>
vscode下调试运行c++
查看>>
python下使用aruco标记进进行三维姿势估计(转载)
查看>>
aruco_calibration相机标定(ARUCO二维码是可以用来进行相机标定的)
查看>>
Docker镜像备份与迁移(操作系统级别的巨大镜像就可以这样将镜像备份成本地文件)
查看>>
用docker启动ubuntu的桌面环境
查看>>
Linux-Ubuntu下安装python和卸载
查看>>
应该也有别人搭建好的PX4仿真环境的docker
查看>>
Ubuntu与ROS的Docker桌面系统与ROS在线练习课程(在线Linux虚拟机)
查看>>
Ubuntu安装 Docker CE,VNC访问docker图形界面并安装ROS
查看>>
桌面版docker操作_让docker容器系统拥有图形化桌面
查看>>
linux apt-get autoremove别乱用(转载)
查看>>
docker-ubuntu-vnc-desktop
查看>>
docker镜像也是有tag的,就是不同版本和github一样,所以不用急着直接docker pull,先看看有没有其他版本。
查看>>
gazebo似乎就是在装ROS的时候一起装了,装ROS的时候选择的是ros-melodic-desktop-full的话。
查看>>
rosdep init 错误的终极解决方法
查看>>
一些适合做自主无人机的机架
查看>>
Visual Studio Code 如何编写运行 C、C++ 程序?(高赞回答)
查看>>
vscode的C++编译环境我最后是按照这个来弄了,确实就20秒。
查看>>
Docker ubuntn 使用apt-get update报错
查看>>