Java:简单算法:冒泡排序、选择排序、二分查找

news2025/6/18 3:35:34

冒泡排序

在这里插入图片描述

// 1、准备一个数组
int[] arr = {5231};

//2、定义一个循环控制排几轮
for (int i = 0; i < arr.length - 1; i++) {
// i = 0 1 2        【5,2,3,1】      次数
// i = 0 第一轮       0  1  2            3
// i = 1 第二轮       1  2               2
// i = 2 第三轮       0                  1

//3、定义一个循环控制每轮比较几次。
for (int j = 0; i < arr.length-i-1; j++) {
//判断当前位置的元素值,是否大于后一个位置处的元素值,如果大则交换。
if(arr[j] > arr[j+1]){
int temp = arr[i+1];
arr[j+1] = arr[i];
arr[j] = temp;
		}
	}
}
system.out.println(Arrays.toString(arr));


选择排序

// 1、准备一个数组
int[] arr = {5231};

//2、定义一个循环控制排几轮
for (int i = 0; i < arr.length - 1; i++) {
// i = 0 1 2        【5,2,3,1】      
//                    0 1  2  3
// i = 0 第一轮     j=   1  2  3          
// i = 1 第二轮     j=      2  3               
// i = 2 第三轮     j=         3                  

//3、定义一个循环控制每轮比较几次。
for (int j = i + 1; i < arr.length; j++) {
//判断当前位置的元素值,是否大于后一个位置处的元素值,如果大则交换。
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
		}
	}
}
system.out.println(Arrays.toString(arr));

简化代码,适用于当数组非常大时提高性能

// 1、准备好一个数组
int[] arr = {5132};/ /

//2、控制选择几轮
for (int i = 0; i < arr.length - 1; i++) {
     int minIndex = i;
     
//3、控制每轮选择几次。
for (int j = i + 1; j < arr.length; j++) {
//判断当前位置是否大于后面位置处的元素值,若大于则交换。
if(arr[minIndex] > arr[i]){
minIndex = j;
	}
}
//决定是否交换。
if(i != minIndex) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
	}
}
system.out.println(Arrays.toString(arr));


二分查找

  public static void main(String[] args) {
        //1.准备好一个数组,首先这个数组必须是排好顺序的
        int[] arr = {7,23,79,81,103,127,131,147};

        //接下来将二分法定义成一个方法,调用这个方法
        System.out.println(binarySearch(arr, 81));//返回 3 
        System.out.println(binarySearch(arr, 166));//返回 -1
    }

    public static int binarySearch(int[] arr, int data){
        //1.定义两个变量,一个站在左边位置,一个站在右边位置。
        int left = 0;
        int right = arr.length-1;

        //2.定义一个循环 控制折半
        while (left <= right){
            //3.每次折半都算出中间位置的索引
            int middle = (left + right)/2;
            //4.判断当前要找的元素值,与中间位置处的元素值的大小情况
            if (data < arr[middle]) {
                //往左边找,截止位置(右边位置) = 中间位置 - 1;
                right = middle -1;
            }else if (data >arr[middle]){
                //往右边找,截止位置(左边位置) = 中间位置 + 1;
                left = middle +1;
            }else {
                return middle;//刚好中间位置就是需要的元素
            }
        }
        return -1;//代表数组中没有要找的元素。
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt与电脑管家2

1.竖线的添加与样式的修改&#xff1a; color: rgb(238, 238, 238); 2. 通过修改之前的自定义btn类代码&#xff0c;可以比较容易地创造出各种各样的按钮类 头像的样式表代码&#xff1a; QPushButton{ border-image: url(:/images_up/icon.jpg); border-radius:20px; } QPu…

汽配企业想上MES管理系统,需要具备哪些条件

随着全球汽车行业的快速发展&#xff0c;汽配行业也面临着日益激烈的竞争和不断变化的市场环境。为了应对这种挑战&#xff0c;许多汽配企业开始考虑引入制造执行系统&#xff08;MES&#xff09;来提高生产效率和管理水平。然而&#xff0c;在实施MES管理系统解决方案之前&…

[保研/考研机试] KY35 最简真分数 北京大学复试上机题 C++实现

题目链接&#xff1a; 最简真分数https://www.nowcoder.com/share/jump/437195121691719749588 描述 给出n个正整数&#xff0c;任取两个数分别作为分子和分母组成最简真分数&#xff0c;编程求共有几个这样的组合。 输入描述&#xff1a; 每组包含n&#xff08;n<600&…

开启MySQL的binlog日志

1.判断MySQL是否已经开启binlog SHOW VARIABLES LIKE log_bin; 查看MySQL的binlog模式 show global variables like "binlog%";几个关于binlog常用的命令 #查看日志开启状态 show variables like log_%; #查看所有binlog日志列表 show master logs; #查看最新一个b…

Observability:识别生成式 AI 搜索体验中的慢速查询

作者&#xff1a;Philipp Kahr Elasticsearch Service 用户的重要注意事项&#xff1a;目前&#xff0c;本文中描述的 Kibana 设置更改仅限于 Cloud 控制台&#xff0c;如果没有我们支持团队的手动干预&#xff0c;则无法进行配置。 我们的工程团队正在努力消除对这些设置的限制…

【产品人卫朋】专栏及配套资料更新:华为流程体系、产品经理、IPD与BLM模型

目录 前言 01 华为流程体系专栏 CSDN学院 02 产品经理进阶专栏 CSDN学院 03 华为战略方法论专栏 04 IPD 进阶 100 例专栏 作者介绍 前言 截止目前&#xff0c;本号已上线四大干货专栏&#xff0c;内容涉及&#xff1a; 01 华为流程体系&#xff08;图文视频&#xff0…

为什么DNS协议运行在UDP之上?

DNS (Domain Name System) 运行在 UDP (User Datagram Protocol) 上主要是出于以下原因&#xff1a; 简单性和效率&#xff1a;UDP 是无连接的&#xff0c;这意味着与建立和维护 TCP 连接相比&#xff0c;UDP 有更少的开销。当 DNS 查询被发送时&#xff0c;它只需要一个小的请…

MRO工业品采购过程中,采购人员要注意哪些事项

MRO工业品指工厂或企业对其生产和工作设施、设备进行保养、维修&#xff0c;保证其运行所需要的非生产性物料&#xff0c;这些物料可能是用于设备保养、维修的备品备件&#xff0c;也可能是保证企业正常运行的相关设备&#xff0c;耗材等物资&#xff0c;如安全防护、传媒广电、…

那些年的Android开发经验记录

Android Studio 新版Logcat 从惊艳到放弃 AS总算更新了这个logcat了&#xff0c;原来的logcat真是使用起来贼难受&#xff0c;动不动过滤就失效&#xff0c;或者日志不打印&#xff0c;新版的logcat初步使用下来&#xff0c;那是贼舒服&#xff0c;先上一张界面图 一眼看…

金蝶云星空与四化智造MES(API)对接集成供应商查询连通新增供应商信息(BASIC-KM同步供应商-TEST)

金蝶云星空与四化智造MES&#xff08;API&#xff09;对接集成供应商查询连通新增供应商信息(BASIC-KM同步供应商-TEST) 来源系统:金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平…

Java反射机制,动态代理,hook以及在Retrofit源码中的应用

1.反射的基础知识&#xff1a; Java的反射机制是指在程序的运行状态中&#xff0c;可以构造任意一个类的对象&#xff0c;可以了解任意一个对象所属的类&#xff0c;可以了解任意一个类的成员变量和方法&#xff0c;可以调用任意一个对象的属性和方法。这种动态获取程序信息以及…

STM32CubeMX安装教程

0.前言 安装步骤&#xff1a; 参考&#xff1a;【STM32】STM32 CubeMx使用教程一--安装教程_Z小旋的博客-CSDN博客 JRE(Java Runtime Environment)&#xff1a;Java运行环境STM32CubeMXHAL库&#xff1a;STM32 HAL固件库 1. 安装Java 官网&#xff1a;https://www.java.co…

DNS部署与安全详解(下)

文章目录 前言一、指定区域解析配置二、DNS服务器对外名称显示配置三、转发器使用配置四、配置辅助&#xff08;备份&#xff09;服务器五、如何让虚拟机可以真实上网六、为DNS服务器配置别名 前言 上一篇博客我们已经在Windows server2003的虚拟机上下载了DNS软件&#xff0c;…

IDEA 实用小技巧(Scratch files(临时文件))

当你在使用IDEA编写项目代码的时候&#xff0c;是否遇到过如下一些情况&#xff1f; 1. 与别人沟通&#xff0c;需要简写某个功能的伪代码 2. 想记录一些json格式的数据&#xff0c;并且能格式化&#xff0c;即JSON文档功能 3. 想记录一些其他语言例如HTML&#xff0c;CSS&a…

SAP 批量CC11 创建物料版本(RFC:REVISION_LEVEL_INSERT)

REVISION_LEVEL_INSERT FLG_API ‘X’ 就不弹框 不直接报message 需要commit work &#xff0c;里面有句代码 perform db_insert on commit 输入输出参数如下 输入&#xff1a; 输出&#xff1a; COMMIT 后再看MM03

java实现文件的下载

系统日志的获取不可能每次都登录服务器&#xff0c;所以在页面上能够下载系统运行的日志是必须的 如何来实现日志的下载&#xff0c;这样的一个功能 前端我们用到的是window.open(...)这样可以发送一个get请求到后台 后台接收到get请求之后&#xff0c;如何实现对文件的下载 R…

mac arm 通过brew搭建 php+nginx+mysql+xdebug

1.安装nginx brew install nginx //安装brew services start nginx //启动2.安装php brew install php7.4 //安装export PATH"/opt/homebrew/opt/php7.4/bin:$PATH" //加入环境变量 export PATH"/opt/homebrew/opt/php7.4/sbin:$PATH"brew serv…

EXPLAIN使用分析

系列文章目录 文章目录 系列文章目录一、type说明二、MySQL中使用Show Profile1.查看当前profiling配置2.在会话级别修改profiling配置3.查看profile记录4.要深入查看某条查询执行时间的分布 一、type说明 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引&…

matplotlib 设置legend的位置在轴最上方,长度与图的长度相同

import matplotlib.pyplot as plt import numpy as npx1 np.linspace(0, 10, 50) x2 [6,4,3]ax plt.subplot() ax.plot(x1, label"test1") ax.plot(x2, label"test2") # 设置图例的位置 # 将左下角放置在【0, 1.02】位置处&#xff0c;横为1&#xff0c…

MySQL——Mysql安装教程- Windows

一、Mysql安装 1、下载mysql安装包 下载链接&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg 提取码&#xff1a;zt88 2、 安装 1&#xff09;选择电脑磁盘空闲的路径&#xff1a; 2&…