二分查找(java 超详图解 递归 以及其他查找排序算法)

简介: 1.堆排序2.快速排序3.归并排序4.冒泡排序5.选择排序6.顺序查找7.二分查找查找图解:代码详解: 代码

1.堆排序



2.快速排序




3.归并排序




4.冒泡排序


java冒泡排序以及优化,并用vue+element在网页上进行可视化排序_一个热爱编程的小白白的博客-CSDN博客

5.选择排序


选择排序以及选择排序优化_一个热爱编程的小白白的博客-CSDN博客




6.顺序查找


顺序查找以及带哨兵的顺序查找java版本_一个热爱编程的小白白的博客-CSDN博客


7.二分查找


请对一个有序数组进行二分查找{1,3,5,9,20},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就返回-1。


查找图解:






代码详解:


这里我们加大难度:


产生一个随机数组,并产生一个随机数 用二分查找 查找该随机数


//产生一个随机数组


Random r = new Random();

int arr[] = new int[10];

for (int i = 0; i < arr.length; i++) {

   arr[i] = r.nextInt(10);

}


并产生一个随机数:


int n=r.nextInt(10);


因为二分查找的条件:有序数组


故此采用:  


Arrays.sort(arr); //先进行排序


检查是否排序完成:


System.out.println("数组排序后:"+Arrays.toString(arr));

调用方法:


System.out.println("要查询的数:"+n);


System.out.println("该数字索引位置:"+BinarySort(arr, 0, arr.length-1, n));


方法:BinarySort(int[] arr,int left,int right,int n)


left表示最左边下标  right表示最右边下标 n表示要查找的数


mid 表示中间数的下标


mid = (left+right)/2;  求中间下标

if(left>right){

   return -1;

}

表示 如果左边的下标大于右边 则查找失败


if(n>arr[mid]){//如果要查的数比中间的数大 那么中间下标+1 然后递归

     mid++;

                    //mid作为下次的最左边下标 right作为右下标

     return BinarySort(arr,mid,right,n);

 }

if (n

     mid--;

                     //left作为左下标 mid作为右下标

     return BinarySort(arr,left,mid,n);

 }


//如果查找的数字 不大于 也不小于 那么只能等于了 所以返回mid


 return mid;


代码

import java.util.Arrays;
import java.util.Random;
public class binarySort {
    public static void main(String[] args) {
        //产生一个随机数组
        Random r = new Random();
        int arr[] = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = r.nextInt(10);
        }
        System.out.println("产生的随机数组:"+Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("数组排序后:"+Arrays.toString(arr));
        int n=r.nextInt(10);
        System.out.println("要查询的数:"+n);
        System.out.println("该数字索引位置:"+BinarySort(arr, 0, arr.length-1, n));
    }
    private static int BinarySort(int[] arr,int left,int right,int n) {
        int mid;
        mid = (left+right)/2;
        if(left>right){
            return -1;
        }
        else{
            if(n>arr[mid]){
                mid++;
                return BinarySort(arr,mid,right,n);
            }
          if (n<arr[mid]){
                mid--;
                return BinarySort(arr,left,mid,n);
            }
            return mid;
        }
    }}


相关文章
|
3月前
|
监控 算法 网络协议
Java 实现局域网电脑屏幕监控算法揭秘
在数字化办公环境中,局域网电脑屏幕监控至关重要。本文介绍用Java实现这一功能的算法,涵盖图像采集、数据传输和监控端显示三个关键环节。通过Java的AWT/Swing库和Robot类抓取屏幕图像,使用Socket进行TCP/IP通信传输图像数据,并利用ImageIO类在监控端展示图像。整个过程确保高效、实时和准确,为提升数字化管理提供了技术基础。
98 15
|
17天前
|
算法 Java 索引
算法系列之搜素算法-二分查找
二分查找是一种在`有序`数组中查找特定元素的算法。它的基本思想是通过将数组分成两半,逐步缩小查找范围,直到找到目标元素或确定目标元素不存在。
30 9
算法系列之搜素算法-二分查找
|
16天前
|
存储 算法 Java
算法系列之递归反转单链表
递归反转链表的基本思路是将当前节点的next指针指向前一个节点,然后递归地对下一个节点进行同样的操作。递归的核心思想是将问题分解为更小的子问题,直到达到基本情况(通常是链表末尾)。
34 5
算法系列之递归反转单链表
|
5月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
135 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
1月前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
2月前
|
存储 人工智能 算法
解锁分布式文件分享的 Java 一致性哈希算法密码
在数字化时代,文件分享成为信息传播与协同办公的关键环节。本文深入探讨基于Java的一致性哈希算法,该算法通过引入虚拟节点和环形哈希空间,解决了传统哈希算法在分布式存储中的“哈希雪崩”问题,确保文件分配稳定高效。文章还展示了Java实现代码,并展望了其在未来文件分享技术中的应用前景,如结合AI优化节点布局和区块链增强数据安全。
|
2月前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
102 16
|
2月前
|
运维 监控 算法
企业局域网监控软件中 Java 优先队列算法的核心优势
企业局域网监控软件是数字化时代企业网络安全与高效运营的基石,犹如一位洞察秋毫的卫士。通过Java实现的优先队列算法,它能依据事件优先级排序,确保关键网络事件如异常流量、数据泄露等被优先处理,保障系统稳定与安全。代码示例展示了如何定义网络事件类并使用PriorityQueue处理高优先级事件,尤其在面对疑似风险时迅速启动应急措施。这一核心技术助力企业在复杂网络环境中稳健前行,护航业务腾飞。
69 32
|
2月前
|
存储 监控 算法
剖析基于Java算法驱动的智能局域网管控之道
本文探讨了基于Java语言的局域网控制方案,结合链表数据结构与令牌桶算法,解决设备管理和流量调度难题。通过链表灵活存储网络设备信息,实现高效设备管理;令牌桶算法则精准控制流量,确保网络平稳运行。二者相辅相成,为校园、企业等局域网提供稳固高效的控制体系,保障业务连续性和数据安全。
|
2月前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
86 6

热门文章

最新文章