17-二分查找

*

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class BinarySearch {
/*
    二分查找原理:
        顾名思义,就是在一个数组中查找一个特定的值
        二分查找可以在每次查找后,减少一半的查找量

        但是二分查找有个前提就是数组必须是先排序好的。
 */

    public static void main(String[] args) {
        // 随机生成(1-100)的指定长度的数组
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入指定的数组长度:");
        int[] arr = randomArr(scanner.nextInt());
        System.out.println("源数组: arr = " + Arrays.toString(arr));

        System.out.print("请输入要查找的元素:");
        int key = scanner.nextInt();
        int index = binarySearch(arr, key);
        if (index != -1) {
            System.out.println(key + "值在数组中的索引为:" + index);
        }
        else {
            System.out.println("数组中不存在" + key + "元素!");
        }
    }

    private static int binarySearch(int[] arr, int key) {
        // 定义小索引min,和大索引max
        int min = 0;
        int max = arr.length - 1;
        // 循环查找
        while (min  arr[middle]) {
                min = middle + 1;
            }else {
                return middle;
            }
        }
        return -1;
    }

    private static int[] randomArr(int length) {
        Random random = new Random();
        System.out.print("请输入数组的长度:");
        int[] arr = new int[length];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(101) + 1;
        }
        Arrays.sort(arr);
        return arr;
    }
}

Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16567734.html
Author: OnlyOnYourself-Lzw
Title: 17-二分查找

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619803/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL之连接查询和子查询

    多表连接的基本语法 多表连接,即将多个表拼接成一个表,然后进行查询 [En] Multi-table join, that is, several tables are splic…

    数据库 2023年5月24日
    0141
  • Host-Only模式下虚拟机无法联网问题

    环境: 镜像:Linux CentOS7——————————…

    数据库 2023年6月11日
    092
  • Mysql的知识梳理

    数据准备: –建表 create table customer_jia(CID int(4), Cname varchar(20), Csex varchar(2), …

    数据库 2023年5月24日
    0114
  • MySQL 数据库自动备份

    压缩文件恢复 gzip -d backup.sql.gz | mysql -h -u -p Tips: gzip -d为解压, 下面介绍下gzip用法与参数介绍(gzip命令只是压…

    数据库 2023年5月24日
    070
  • SpringBoot快速入门

    虽然我的工作中更多的是与数据库打交道,但是作为一个 Coder,我觉得掌握前后端的 Web技术来说是非常有必要的。 不仅可以帮助我们在工作中更好的理解其他岗位与你对接的人他的工作痛…

    数据库 2023年6月11日
    071
  • 符合标准的正常工作的对联广告(漂浮广告JS代码)

    符合标准的正常工作的对联广告JS代码(漂浮广告)。DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN…

    数据库 2023年6月11日
    074
  • update更新很慢(字段类型引发)

    开发人员在sql审核平台提交了2000多条update语句,每条语句只更新一条,where条件由索引,在sql审核平台在测试执行阶段已经执行了20多分钟。于是让看一下数据库后台线程…

    数据库 2023年6月16日
    0113
  • MySQL进阶系列:一文详解explain

    explain有何用处呢: 为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 ​ 可以使用explain+SQL语句来模拟优化器执行SQ…

    数据库 2023年5月24日
    0124
  • MySQL多表查询

    多表查询 案列说明 笛卡尔积的理解 select id,department_name from employees,departments;#错的 select id,depar…

    数据库 2023年5月24日
    078
  • MySQL学习(3)—MySQL常用命令

    ps:此随笔基于mysql 5.7.*版本。 准备 net start mysql 启动MySQL服务 net stop mysql 关闭MySQL服务 mysql [-h exi…

    数据库 2023年5月24日
    083
  • 分享一个有意思的错误

    subList方法拆分集合问题 JAVA技术交流群:737698533 分享一个有意思的错误,先看代码 public static void main(String[] args)…

    数据库 2023年6月16日
    0104
  • [LeetCode]9. 回文数

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解…

    数据库 2023年6月9日
    0162
  • springboot~HandlerFunction和RouterFunction

    HandlerFunction和RouterFunction RouterFunction为我们应用程序添加一个新的路由,这个路由需要绑定一个HandlerFunction,做为它…

    数据库 2023年6月6日
    072
  • 博客园美化-随季节变化实现不同的飘落效果

    最近在研究博客园的美化效果,看到有一个樱花飘落的效果,忽然突发奇想,如果能根据当前日期所处的季节实现不同的飘落效果岂不是更酷。😂 最近在研究博客园的美化效果,看到有一个樱花飘落的效…

    数据库 2023年6月6日
    0106
  • MySQL实战45讲 16

    16 | “order by”是怎么工作的? 以市民表为例,假设要查询城市是”杭州”的所有人名字,并且按照姓名 排序返回前 1000…

    数据库 2023年6月14日
    097
  • Java中的SPI原理浅谈

    在面向对象的程序设计中,模块之间交互采用接口编程,通常情况下调用方不需要知道被调用方的内部实现细节,因为一旦涉及到了具体实现,如果需要换一种实现就需要修改代码,这违反了程序设计的&…

    数据库 2023年6月14日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球