【JavaSE_学习笔记】排序、二分查找与数组工具类

【JavaSE】数组高级与Arrays工具类使用 文章目录一、数组高级1.1 冒泡排序1.2 选择排序1.3 二分查找二、Arrays工具类 一、数组高级 选择和冒泡思想其实不一样,想一下他们的图解: 选择排序是前面的数和后面每一个数比较,最终自己变成最值, 也就是说它的有序是从前往后. 冒泡排序是从前往后,相邻数比较,把最值往后传,最终最值到后面去, 也就是说它的有序是从后往前. 下面的代码中:冒泡外层代表的是总共要比较几趟:如果是 6 个数,那么应该是 5 (次) , 4 (次) , 3 (次) , 2 (次) , 1 (次)总共比 5 趟也就是 le 阅读详情

【JAVA_SE】排序、二分查找与数组工具类

排序

选择排序

思想:
这里写图片描述
代码:

public class Demo1 {
    public static void main(String[] args) {
        int [] arr={13,26,3,9,53};
        mySort(arr);
        //遍历数组,打印其中元素
        for(int i=0;i<arr.length;i++){
            if(i==0){
                System.out.print("["+arr[i]+",");
            }else if(i==arr.length-1){
                System.out.print(arr[i]+"]");
            }else{
                System.out.print(arr[i]+",");
            }//[53,26,13,9,3]
        }
    }
    //选择排序方法
    public static void mySort(int [] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]<arr[j]){
                    int temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }
}
冒泡排序

思想:
这里写图片描述
代码:

public class Demo2 {
    public static void main(String[] args) {
        int [] arr={54,23,87,10,64,8};
        mySort(arr);
        for(int i=0;i<arr.length;i++){
            if(i==0){
                System.out.print("["+arr[i]+",");
            }else if(i==arr.length-1){
                System.out.print(arr[i]+"]");
            }else{
                System.out.print(arr[i]+",");
            }//[8,10,23,54,64,87]
        }
    }
    public static void mySort(int [] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
}

二分查找

前提:针对数组一定有序的
解决思路:
  1)定义最小索引和最大索引
  2)计算出中间索引
  3)拿中间索引对应的元素和要查找的元素进行比较
     如果相等:直接返回中间索引
     不相等:大了,左边找
         小了,右边找
  4)重新获取最小索引和最大索引,计算出中间索引
  5)回到3)继续查找
代码:

public class Demo3 {
    public static void main(String[] args) {
        int [] arr={14,27,43,57,87};//必须为有序数组
        System.out.println(getIndex(arr,43));//2
    }
    //二分查找封装为方法
    public static int getIndex(int [] arr,int target){
        int max=arr.length-1;
        int min=0;
        int mid=(min+max)/2;
        while(true){
            if(target>arr[mid]){
                min=mid+1;
            }else if (target<arr[mid]){
                max=mid-1;
            }else{
                return mid;
            }
            mid=(min+max)/2;
            if(min>max){
                return -1;
            }
        }
    }
}

Arrays工具类

Arrays:此类包含用来操作数组(比如排序和搜索)的各种方法(针对数组操作的工具类)
常用的方法:
  public static String toString(int[] a):将任意类型的数组以字符串形式显示出来
  public static void sort(int[] a):快速排序:(将给定数组中元素升序排序)
  public static int binarySearch(int[] a, int key):当前int数组一定是有序数组
    使用二分搜索法来搜索指定的 int 型数组,以获得指定的值
举例:

public class ArraysDemo {

    public static void main(String[] args) {

        //定义一个数组
        int[] arr = {24,69,80,57,13} ;
        //讲数组转成字符串的形式
        System.out.println("toString():"+Arrays.toString(arr));
        //[24, 69, 80, 57, 13]

        //public static void sort(int[] a):快速排序:(将给定数组中元素升序排序)
        Arrays.sort(arr) ;
        //在调用Arrays.toString(int[] a):将排好序的数组以String形式显示出来
        System.out.println(Arrays.toString(arr) );
        //[13, 24, 57, 69, 80]

        //public static int binarySearch(int[] a, int key)
        //查找57元素在数组中的索引
        int index = Arrays.binarySearch(arr, 57) ;
        System.out.println("index:"+index);
        //需求:查找577这个元素的索引
        int index2 = Arrays.binarySearch(arr, 577) ;
        System.out.println("index2:"+index2);//-6
    }
}
用LangFuse+LangChain打造可观测的AI应用:从埋点到成本监控实战 本文详细介绍了如何将开源可观测性平台LangFuse深度集成到基于LangChain构建的AI应用中,特别是电商客服机器人场景。通过从基础SDK集成、提示词管理到成本监控的完整实战,帮助开发者实现对LLM应用内部工作流的清晰追踪、问题排查与费用分析,从而打造稳定、可控的生产级AI应用。 阅读详情

相关推荐

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

Java中的二分查找 ,Arrays数组工具类

此类包含用来操作数组的各种方法,比如排序和搜索等。Arrays类私有修饰构造方法,其所有方法均为静态方法,调用起来非常简单。所谓数组的二分查找法,对于一个有序数组,查找一个元素是否存在于数组中,如果存在就返回出现的索引,如果不存在就返回负数。取数组中间的元素和被查找的元素进行比较,如果被查找元素大于数组中间元素,就舍去数组元素的一半,对另一半继续进行查找。

m0_53400772的博客 343

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

weixin_44115575的博客 1427

Java面试要点54 - Java List的二分查找算法

在实际开发中,我们经常需要按照特定的规则进行查找。Java允许我们通过自定义Comparator来实现这一需求。这种方式特别适合那些没有实现Comparable接口的类,或者需要按照不同于自然顺序的方式进行查找的场景。// getter方法@Overridenew Product("商品A", 29.99, 100),new Product("商品B", 49.99, 50),new Product("商品C", 99.99, 75),

程序媛学姐的博客 715

【飞腾平台安装windows arm 11系统】

本文提供国内的百度网盘链接供下载使用:链接: https://pan.baidu.com/s/1_cftVdoX40k0M6zVTmFq8Q?3)快速迁移虚拟机技巧:如果是迁移已经安装好的虚拟机的使用场景,除了导出镜像外,也可直接复制安装好虚拟机的整个文件夹到指定的存储目录,选定好其中的任意qcow2文件后即可快速启动。可在飞腾软件平台点击网盘链接获取对应系统的deb包(麒麟和统信)以及phyvirt·app,下载地址:https://www.phytium.com.cn/developer/

firefly_cv的博客 8937

CISP-PTE八套真题详解(侵删)_cisp-pte 考题与答案,万字长文轻松彻底入门Flutter

接下来就是代码审计了isset()函数用于检测变量是否已设置并且非 NULL代码中base64解码出来是一个base64的一句话木马根据代码,需要我们提交一个Hello参数,参数的值为多少都行,然后我们可以通过提交z0参数的base64值进行执行命令先用phpinfo();试一下:发现执行成功那么直接写个查看key文件的系统命令(记得最后要加分号)在源代码中找到key。

2401_83947398的博客 4675

Arrays工具类二分查找方法binarySearch方法详解

因此,调用本方法要保证源数组是有序的,且内部的元素是唯一的。该方法的一般形式是public static int binarySearch(T[] a, T key),对于基本类型,都有相应的重载方法,如针对int类型有binarySearch(int[] a, int key)等。插入点被定义为将键插入数组中的点:第一个大于键的元素的索引,或者如果数组中的所有元素都小于指定的键,则为a.length。如果数值中找不到要查找的值(也即key),则返回值为:(-(插入点)- 1)。

weixin_50083448的博客 917

Matlab结果性能评价---rms函数(计算矩阵、数组和向量元素均方根)

实例1:创建一个向量(正弦波)并计算其均方根值 实例2:创建一个二维矩阵并计算其均方根值 实例3:计算二维矩阵沿指定维度的均方根值 本例程配套完整源码下载 均方根(Root-Mean-Square Level): 向量x的均方根值为沿着指定的维度执行求和: 语法描述: y = rms(x)返回输入x的均方根值。如果x是行或列向量,y是实数值标量。对于大小尺寸大于1矩阵x,y包含沿x的第一个数组维度计算的均方根值。例如,如果x是N > 1的N*M矩阵,那么y是1*M行向量,对应x矩..

qq_32809093的博客 3万+

java基础day_04(查找:二分查找法,Arrays工具类)

案例代码如下。

Jtyazs的博客 160

2023华为OD机试真题B卷 Python 实现【最长的元音子串长度】

定义当一个字符串只有元音字母(a,e,i,o,u,A,E,I,O,U)组成,称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0, 字符串中任意一个连续字符组成的子序列称为该字符串的子串

MISAYAONE的博客 902

S7-200 SMART PLC 子程序功能块(阀门控制)

由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 8070

【java】二分查找法与Arrays工具类

二分查找法: import java.util.Scanner; /** * 二分法查找: * 1、二分法查找建立在"排序"的基础上。 * 2、原理: * 10(下标0) 23 56 89 100 111 222 235 500 600(下标9) arr数组 * 目标:找出600的下标 * 开始下标为0 * (0+9) / 2 == 4(中间元素下标) 自动取整 *

weixin_52099341的博客 718

学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模

本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构

xiaoheshang_123的博客 210

JavaSE进阶 | 二维数组的定义和使用、查找和排序算法

二维数组的定义和使用、用数组模拟栈、模拟酒店的订房退房功能、常用的排序和查找算法

m0_61933976的博客 1643

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java数组之数组工具类——Arrays的使用

介绍数组常用的工具类中的方法,已经常见的关于数组的异常。

weixin_44554794的博客 1787

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JavaSE 排序与查找算法

i < size-1;i ++)j++)if(arr[j] > arr[j+1]) //交换两数位置【算法描述】int i=0;for(;return -1;

qq_59737375的博客 859

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【JavaSE】数组、排序、查找学习笔记

排序是将一群数据,依指定的顺序进行排列的过程。这里只简单介绍一下排序,更多排序方法见算法部分排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

qq_24052051的博客 896

JavaSE数组和Arrays工具类的使用

本文章主要讲了JavaSE数组和Arrays工具类基本使用

zhangshuai66的博客 841

01-4、JavaSE知识点总结_数组

JavaSE知识点总结集合集合与数组的区别集合java.util.Collection接口java.util.Iterator接口有三个方法java.util.Listjava.util.ArrayListjava.util.LinkedListjava.util.Vector集合中线程不安全转为线程安全泛型自定义泛型泛型类泛型方法泛型接口foreeach增强for循环java.util.HashSetjava.util.TreeSetjava.util.Map接口遍历Map集合第一种第二种,效率相对较高哈

马上要秃头的我 512

JavaSE之数组与排序

这一章主要讲数组的概念,以及在Java中的定义格式,以及一些数组的练习示例,配合着上一章节的循环,起到更好的练习作用。最后讲了三个排序:冒泡排序、选择排序、插入排序的排序思想和排序方式。

Bennett的博客 638

Javase | 数组、数组工具类

1.数组、2.数组的 “存储结构” 3.数组的优缺点、 3.1 数组的优点 3.2 为什么数组的检索效率高? 3.3 数组的缺点 4.一维数组 4.1 一维数组的“存储结构” 4.2 一维数组的“静态初始化” 4.3 一维数组的“动态初始化” 4.4 一维数组的“遍历” 5.数组的“扩容” 6.二维数组 61. 二维数组 6.2 二维数组的“遍历” 7.Arrays工具类:.....

m0_70720417的博客 367

Javase-8.数组的练习

int i = 0;= 0) {i++;= 1) {j--;

薯条不要番茄酱的博客 1703

3.1_11 JavaSE入门 P10 【常用API】数组排序和Arrays工具类、包装类、Date

JavaSE入门 P10 【常用API】数组排序和Arrays工具类、包装类、Date 1.数组排序和Arrays工具类 2.包装类 3.Date、SimpleDateFormat类 4.课后练习 5.Date格式校验Utils

GroupiesM的博客 4247

《JavaSE-第六章》之容器数组

本章大家介绍一个存储相同数据类型的容器----数组,以及便于我们对数组操作的工具类Arrays类的使用。

java优质资源提供与创作者 1110

JavaSE(三)——数组及继承

1. 数组定义 1.1 一维数组 定义:数组是用来存储固定大小的同类型元素,且下标从0开始。 格式1:元素类型[ ] 数组名 = new 元素类型 [元素个数] 格式2:元素类型[ ] 数组名 = {元素,元素,元素…} 注意:Java 不允许在声明数组中的方括号内指定数组元素个数。 1.1.1 实例 1.1.2 冒泡排序 相邻的两个元素进行比较,如果符合条件,就交换位置,第一圈下来最...

吃饭了吗 693

JAVASE学习笔记 超强大的数组工具类--Arrays工具类

在java中,对于数组的操作提供一个Arrays类工具,专门针对数组提供一些方法(静态方法)。下面是对于Arrays工具类的常用方法进行说明。 1.Arrays类工具的拼串方法 案例:给定一 数组{1,2,3}将数组中的元素,拼接成一个漂亮的字符串[1,2,3]。 将数组的元素进行拼串的常用方法 方法一:可以通过StringBuffer类或者StringBuilder类进行操作 方法二:可以通过Arrays类工具进行操作,Arrays工具类中含有一个toString()方法对数组进

qq_41537102的博客 314
上一篇: 【JavaSE_学习笔记】Integer和Character
下一篇: 【JavaSE_学习笔记】BigDecimal类与BigInteger类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值