当前位置: 首页 > news >正文

Java-三个算法冒泡-选择排序,二分查找

Java算法:

冒泡排序;

解析:将前后两个数对比,将大的数(或小的)调换至后面,每轮将对比过程中的最大(或最小)数,调到最后面。每轮对比数减一;初始对比数为数组长度-1.

import java.util.Arrays;public class Test816 {public static void main(String[] args) {int[] arr = {5,2,3,1};//        System.out.println(arr);for(int i = 0;i < arr.length-1 ; i ++){   //需要排序的轮数(数组长度-1)for (int j = 0; j < arr.length-i-1 ; j++){ //每轮排序需要多少次if (arr[j] > arr[j+1]){int b = arr[j];arr[j] = arr[j+1];arr[j+1] = b;}}}System.out.println(Arrays.toString(arr));}}

选择排序:

解析:选择第一个数依次与其他元素对比,数值小的或(大的)交换位置至前方(小的为顺序,大的为逆序),每对比一轮选择数向后移动一位。

import java.util.Arrays;public class Test816 {public static void main(String[] args) {int[] arr = {5,2,3,1};for (int i = 0; i < arr.length - 1; i++) {for(int j = i+1;j < arr.length;j++){if(arr[j] < arr[i]){//i在前j在后,顺序就j<i.//两数调换位置int a = arr[i];arr[i] = arr[j];arr[j] = a;}}}System.out.println(Arrays.toString(arr));    }}

选择排序的优化:新建一个数min记录较小数的下标(初始值为轮数数i的下标);然后通过对比,将min改为比它小的数的下标;一轮循环后判断min是否等于初始值i,不相等则调换位置。——该优化减少了交换次数,优化性能i

mport java.util.Arrays;public class Test816 {public static void main(String[] args) {int[] arr = {5,2,3,1};for (int i = 0; i < arr.length - 1; i++) {int min = i;for(int j = i+1;j < arr.length;j++) {if (arr[j] < arr[i]) {//i在前j在后,顺序就j<i.//min记录新下标min = j;}//一轮完成后获得该轮最小值的的下标if (i != min) {判断是否与初始下标相同,不同则交换数据。int a = arr[i];arr[i] = arr[min];arr[min] = a;}}}System.out.println(Arrays.toString(arr));   }}

查找算法:

二分查找:通过对比中间值与目标值的的小来减小对比范围;当中间值小于目标值时,取中间值+1到末尾的中间值与目标对比,重复步骤,直至首尾相同。返回该值。

public class Test19 {public static void main(String[] args) {int[] arr = {7,23,79,81,103,127,131,147};int left,mid,right;System.out.println(bancha(arr,103));}///传入数组A,以及要搜索的数据public static int bancha(int[] a,int date){int left = 0,right = a.length - 1;while(left <= right) {int mid = (left + right) / 2;if (a[mid] > date) {right = mid - 1;} else if (a[mid] < date) {left = mid + 1;} else {return mid;//                break;}}return -1;}}

相关文章:

Java-三个算法冒泡-选择排序,二分查找

Java算法&#xff1a; 冒泡排序; 解析&#xff1a;将前后两个数对比&#xff0c;将大的数&#xff08;或小的&#xff09;调换至后面&#xff0c;每轮将对比过程中的最大&#xff08;或最小&#xff09;数&#xff0c;调到最后面。每轮对比数减一&#xff1b;初始对比数为数组…...

docker版jxTMS使用指南:使用jxTMS提供数据

本文讲解了如何jxTMS的数据访问框架&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.4版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内容 4…...

阿里 MySQL 规范

阿里 MySQL 规范 1. 建库建表规范 【推荐】库名与应用/服务名称尽量一致。 【强制】表名不使用复数名词。 说明&#xff1a;表名应该仅仅表示表里面的实体内容&#xff0c;不应该表示实体数量&#xff0c;对应于DO类名也是单数形式&#xff0c;符合表达习惯。 【推荐】表的…...

C++ Primer阅读笔记--动态内存和智能指针

​​​​​​​ 目录 1--动态内存管理 2--shared_ptr类 2-1--make_shared 函数 2-2--引用计数 2-3--get 3--new和delete 4--shared_ptr和new结合使用 5--unique_ptr 6--weak_ptr 1--动态内存管理 new&#xff1a;在动态内存中为对象分配空间并返回一个指向该对象的指…...

git分支管理策略

git的基础操作以及常用命令在上篇博客哦~ git原理与基本使用 1.分支管理 1.主分支 在版本回退⾥&#xff0c;我们已经知道&#xff0c;每次提交&#xff0c;Git都把它们串成⼀条时间线&#xff0c;这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前&#xff0c;只有⼀条时间线&…...

IntelliJ IDEA maven配置,设置pom.xml的配置文件

IntelliJ IDEA项目&#xff0c;选择 文件 设置&#xff0c;弹窗 构建、执行、部署 构建工具 Maven就可以 maven配置好以后&#xff0c;在pom.xml的配置文件中就可以设置对应的jar包了&#xff0c;这样构建的时候自动需要的jar&#xff0c;在项目中导入即 settings.xml文件apa…...

C#__使用Thread启动线程和传输数据

class Program{static void Test(){Console.WriteLine("Start……");Thread.Sleep(2000); // 1s等于1000ms&#xff0c;暂停2sConsole.WriteLine("end");}static void Download(Object ob){string str ob as string; // 遍历传递过来的ob字符串Console.Wr…...

appium2.0+ 单点触控和多点触控新的解决方案

在 appium2.0 之前&#xff0c;在移动端设备上的触屏操作&#xff0c;单手指触屏和多手指触屏分别是由 TouchAction 类&#xff0c;Multiaction 类实现的。 在 appium2.0 之后&#xff0c;这 2 个方法将会被舍弃。 "[Deprecated] TouchAction action is deprecated. Ple…...

记录一次Modbus通信的置位错误

老套路&#xff0c;一图胜千言&#xff0c;框图可能有点随意&#xff0c;后面我会解释 先描述下背景&#xff0c;在Modbus线程内有一个死循环&#xff0c;一直在读8个线圈的状态&#xff0c;该线程内读到的消息会直接发送给UI线程&#xff0c;UI线程会解析Modbus数据帧&#xf…...

数据结构--递归与分治

汉诺塔分析&#xff1a; 以三层进行分析&#xff0c;大于三层分析情况是一样的。 #include <stdio.h>void move(int n,char x,char y,char z) {if(1 n){printf("%c---------->%c\n",x,z);}else{move(n-1,x,z,y);//将第n-1个盘子从x借助z移动到y printf(&q…...

spring cloud gateway中出现503

spring cloud gateway中出现503 当搭建网关模块的时候出现503的错误的最大的可能就是没有设置负载均衡的依赖包 原先搭建的时候采用的是下面的方式进行设置的 gateway:discovery:locator:enabled: true #可以从nacos进行服务的发现 上面的这种方式可以直接进行注册和发现&…...

战略在集体学习过程中涌现

战略学习派&#xff1a;战略是涌现的学习过程&#xff0c;中国人的话&#xff0c;要交学习费&#xff01;【安志强趣讲269期】 趣讲大白话&#xff1a;出来混总要交学费 **************************** 中国人有这个意识 新进一个领域&#xff0c;要交学费&#xff0c;有学习过程…...

html动态爱心代码【四】(附源码)

目录 前言 特效 完整代码 总结 前言 情人节马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直接使用。…...

如何利用SLF4J扩展模块实现高效的日志记录

如何利用SLF4J扩展模块实现高效的日志记录 摘要&#xff1a;SLF4J&#xff08;Simple Logging Facade for Java&#xff09;是一个用于 Java 程序中记录日志的简单门面&#xff0c;它提供了一种统一的日志记录接口&#xff0c;可以方便地切换底层的日志实现。SLF4J 还…...

通用语言模型蒸馏-GLMD

文章目录 GLMD一、PPT内容论文背景P1 BackgroundP2 Approach 相关知识P3 知识蒸馏P4 语言建模词预测逻辑 方法P5 两阶段词汇预测蒸馏P6P7 词汇压缩 实验结果P8 results 二、论文泛读2.1 论文要解决什么问题&#xff1f;2.2 论文采用了什么方法&#xff1f;2.4 论文达到什么效果…...

kafka--技术文档-基本概念-《快速了解kafka》

学习一种新的消息中间键&#xff0c;卡夫卡&#xff01;&#xff01;&#xff01; 官网网址 Apache Kafka 基本概念 Kafka是一种开源的分布式流处理平台&#xff0c;由Apache软件基金会开发&#xff0c;用Scala和Java编写。它是一个高吞吐量的分布式发布订阅消息系统&#xf…...

ChatGPT:ChatGPT 的发展史,ChatGPT 优缺点以及ChatGPT 在未来生活中的发展趋势和应用

目录 1.ChatGPT 是什么 2. ChatGPT 的发展史 3.ChatGPT 优缺点 4.ChatGPT 在未来生活中的发展趋势和应用 5.ChatGPT经历了几个版本 1.ChatGPT 是什么 ChatGPT 是一个在线聊天机器人&#xff0c;可以与使用者进行语义对话和提供帮助。它可以回答各种问题&#xff0c;提供建议…...

【八股】2023秋招八股复习笔记4(MySQL Redis等)

文章目录 目录1、MySQLmysql索引实现mysql索引优化mysql索引失效的情况mysql 千万数据优化mysql 事务隔离级别 & 实现原理mysql MVCC版本链&#xff08;undo log&#xff09;mysql数据同步机制 & 主从复制 &#xff08;binlog&#xff09;mysql 日志&数据恢复&…...

【Unity】 Mesh 和 Mesh.subMeshCount

原文 https://www.cnblogs.com/hwx0000/p/12733582.html 什么是subMesh Mesh里面有这么一个参数mesh.subMeshCount&#xff0c;所以说明了subMesh是 属于 Mesh的&#xff0c;subMesh是mesh的子mesh&#xff0c;subMesh所有的顶点数据信息都来自于对应的Mesh&#xff0c;subMes…...

Java开发中Word转PDF

Java开发中Word转PDF文件5种方案横向评测 https://blog.csdn.net/aley/article/details/127914145?ops_request_misc&request_id&biz_id102&utm_termjava%20%20word%20%E8%BD%ACpdf&utm_mediumdistribute.pc_search_result.none-task-blog-2allsobaiduweb~de…...

简单说明--程序系统如何对用户身份证实名认证接口api

程序系统对注册用户身份认证&#xff0c;接口将【身份证号码、姓名】上传至接口API判断是否匹配 请求数据&#xff1a; bodys.put("idNo", "330421190210182345"); bodys.put("name", "张某某");响应数据&#xff1a; {"name&quo…...

硬核教程:用Gemini境像站构建端到端自动化办公工作流,告别重复操作(国内免费镜像实测)

在日常办公中&#xff0c;大量的重复性操作——数据录入、日报生成、文件归档——占据了相当比例的时间。将这些任务串联成自动化工作流&#xff0c;能显著提升效率。目前国内用户无需特殊网络环境&#xff0c;通过聚合镜像站 RskAi&#xff08;ai.jingxiang.me&#xff09; 即…...

Unity中PNG贴图内存暴增真相:ASTC压缩原理与工业级落地

1. 为什么一张PNG贴图在Unity里会“胖”三倍&#xff0c;而ASTC却能把它按进手机内存里&#xff1f; 你有没有遇到过这样的情况&#xff1a;美术同事发来一张20482048的PNG贴图&#xff0c;文件大小才3.2MB&#xff0c;可一拖进Unity编辑器&#xff0c;Inspector里赫然显示“Te…...

如何快速完成AI智能图像分层:layerdivider完整使用指南

如何快速完成AI智能图像分层&#xff1a;layerdivider完整使用指南 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾经面对复杂的插画设计&#x…...

功能子图检测技术在集成电路设计中的应用与优化

1. 功能子图检测技术概述 在集成电路设计领域&#xff0c;功能子图检测是一项基础而关键的技术。简单来说&#xff0c;它就像是在一堆乐高积木搭建的复杂结构中&#xff0c;找出那些功能相同但拼法可能不同的组件模块。这项技术的核心任务是判断一个给定的子图Q是否是目标图G的…...

STM32H750 ADC性能调优指南:牺牲分辨率换速度?快速转换模式深度实测

STM32H750 ADC性能调优实战&#xff1a;如何在速度与精度间找到最佳平衡点 最近在做一个电机控制项目时&#xff0c;遇到了一个棘手的问题——ADC采样速度跟不上PWM频率的变化。当我尝试将PWM频率提升到20kHz以上时&#xff0c;系统开始出现明显的控制延迟。这个问题让我不得不…...

别再硬编码IP了!用LabVIEW类+队列实现仪器参数动态管理(附网口类实战代码)

告别硬编码&#xff1a;LabVIEW面向对象编程在仪器参数管理中的实战应用 在工业自动化和测试测量领域&#xff0c;工程师们经常面临一个共同的挑战&#xff1a;如何高效管理各类仪器的配置参数。传统开发方式中&#xff0c;IP地址、端口号等关键参数往往直接硬编码在程序里&…...

当99%的作业都是AI写的,大学还剩什么?这届“AI原住民”毕业生的答案亮了!

前言2023年&#xff0c;当ChatGPT横空出世&#xff0c;全球大学生集体迎来一个“作弊神器”——但很快大家发现&#xff0c;它根本不是用来抄作业的&#xff0c;而是重新定义了“学习”本身。这届毕业生有点特殊&#xff1a;他们是人类历史上第一批和生成式AI一起长大的学生&am…...

Qwen-Image-2512+LoRA:构建Godot 4.x原生像素编译工作流

1. 这不是“AI画图”&#xff0c;而是一次像素艺术工作流的底层重构你有没有试过在Godot 4.x里导入一张Stable Diffusion生成的“像素风”图&#xff0c;结果放大一看全是模糊的伪像素、边缘发虚、色阶溢出&#xff0c;连8-bit调色板都对不上&#xff1f;我去年帮三个独立游戏团…...

从B73到5000个RILs:手把手拆解玉米NAM群体构建的完整流程与关键决策

玉米NAM群体构建全流程解析&#xff1a;从亲本筛选到RILs优化的科学决策 站在玉米遗传研究的十字路口&#xff0c;我们常常面临一个核心挑战&#xff1a;如何在有限资源下构建既能捕获广泛遗传多样性&#xff0c;又能实现精准定位的群体&#xff1f;2009年&#xff0c;Buckler团…...