数组排序,Arrays数组工具类专题(Arrays工具类)

java中Arrays工具类的用法 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能: 给数组赋值:通过fill方法。 对数组排序:通过sort方法,按升序 比 较 数 组: 通过equals方法比较数组中元素值是否相等。 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。 截取数组元素:通过copyOf方法和copyOfRange对数组元素进行截取。... 阅读详情

数组排序,Arrays数组工具类专题(Arrays工具类)

1. 冒泡排序

2. 选择排序

3. 二分查找法

最后是Arrays工具类的三个方法:

  1. Arrays.toString()方法,将数组转换成字符串
  2. Arrays.sort()方法,将字符串进行排序
  3. Arrays.binarySearch()方法,通过值查找对应索引.注意(排序问题!).
package com.heima.array;

/*
 * A:画图演示
        需求:
            数组元素:{24, 69, 80, 57, 13}
            请对数组元素进行排序。
            冒泡排序
            相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
 * B:案例演示
            数组高级冒泡排序代码
---------------------------------------------
 * A:画图演示
    * 需求:
        * 数组元素:{24, 69, 80, 57, 13}
        * 请对数组元素进行排序。
        * 选择排序
            * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
  * B:案例演示
        * 数组高级选择排序代码
 */

public class Demo1_Array {
    public static void main(String[] args) {
         int[] arr = {24, 69, 80, 57, 13};
         bubbleSort(arr);
//       selectSort(arr);
         print(arr);
    }
    /*
     * 冒泡排序 1,返回值类型,void 2,参数列表,int[] arr
     * 
     * 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次
     * 第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次
     * 第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次 
     * 第四次:arr[0]与arr[1]比较1次
     */
    public static void bubbleSort(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;*/
                    swap(arr,j,j+1);

                }
            }
        }
    }

    public static void print(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    /*
     * 选择排序
     * 1,返回值类型void
     * 2,参数列表int[] arr
     * 
     * 第一次:arr[0]分别与arr[1-4]比较,比较4次
        第二次:arr[1]分别与arr[2-4]比较,比较3次
        第三次:arr[2]分别与arr[3-4]比较,比较2次
        第四次:arr[3]与arr[4]比较,比较1次
     */

    public static void selectSort(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;*/
                    swap(arr,i,j);
                }
            }
        }
    }

    /*
     *换位操作
     *1,返回值哦类型,void
     *2,参数列表int[] arr , int i , int j
     *
     *如果某个方法,只针对本类使用,不想让其他类使用就可以定义成私有的
     */
    public static void swap(int[] arr, int i ,int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
package com.heima.array;

/*
 *A:案例演示
    * 数组高级二分查找代码
* B:注意事项
    * 如果数组无序,就不能使用二分查找。
        * 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。
 */
public class Demo2_Array {

    public static void main(String[] args) {
        int[] arr = { 11, 22, 33, 44, 55, 66, 77 };
        System.out.println(getIndex(arr, 22)); // 1 //返回的是对应的索引值
        System.out.println(getIndex(arr, 66)); // 5

        System.out.println(getIndex(arr, 88)); // -1 在源代码中返回的值是 -插入值 - 1;
        System.out.println(getIndex(arr, 10)); // -1
        System.out.println(getIndex(arr, 20)); // -1

    }

    // 二分查找法,获得索引值
    // 1,返回值类型,int
    // 2,参数列表,int[] arr , int value

    public static int getIndex(int[] arr, int value) {
        int min = 0;
        int max = arr.length - 1;
        int mid = (min + max) >> 1;

        while (arr[mid] != value) {
            if (arr[mid] > value) {
                max = mid - 1;
            } else if (arr[mid] < value) {
                min = mid + 1;
            }
            mid = (min + max) >> 1;

            if (min > max) {
                return -1;
            }
        }
        return mid;
    }
}
package com.heima.array;

import java.util.Arrays;

/*
 * * A:Arrays类概述
    * 针对数组进行操作的工具类。
    * 提供了排序,查找等功能。
* B:成员方法          
    * 
    * public static String toString(int[] a)         //使用toString方法,将数组转换成字符串
    * public static void sort(int[] a)                 //使用sort方法,将数组进行排序
    * public static int binarySearch(int[] a,int key)//使用binarySearch方法查找值的索引!
 */
public class Demo3_Array {
    public static void main(String[] args) {

        int[] arr = { 33, 22, 11, 12, 44, 55, 66 };
        System.out.println(Arrays.toString(arr)); // [33, 22, 11, 12, 44, 55,
                                                    // 66]

        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr)); // [11, 12, 22, 33, 44, 55,
                                                    // 66]

        // 使用二分法的前提数组必须是有序的!!!如果排序后才使用,那索引值是排序后的数组索引!!!
        int[] arr2 = { 11, 22, 33, 44, 55, 66, 77 };
        System.out.println(Arrays.binarySearch(arr2, 22)); // 1
        System.out.println(Arrays.binarySearch(arr2, 66)); // 5
        // 当值不包含数组中,返回(-插入点-1).
        System.out.println(Arrays.binarySearch(arr2, 10)); // -1 因为10应该放在数组0索引
                                                            // -0-1 为-1
        System.out.println(Arrays.binarySearch(arr2, 100)); // -8
                                                            // 因为100应该放在数组7索引位置
                                                            // -7-1 -8

    }

    // Arrays工具类中的toString源码
    public static String toString(int[] a) {
        if (a == null) // 如果传入的数组是null
            return "null"; // 返回null
        int iMax = a.length - 1; // iMax是最大索引
        if (iMax == -1) // 如果数组中没有元素,则上一行为(0-1)=-1.
            return "[]"; // 返回[] 代表数组元素为空

        StringBuilder b = new StringBuilder(); // 为什么选StringBuilder?线程不安全,但效率高
        b.append('['); // 将[添加到字符串缓冲区中
        for (int i = 0;; i++) { // 遍历数组,判断语句没写默认是true
            b.append(a[i]); // 把第一个元素添加进字符串缓冲区
            if (i == iMax) // 如果索引等于最大索引
                return b.append(']').toString(); // 将]添加子字符串缓冲区,在转换成字符串并返回
            b.append(", "); // 如果不等于最大索引就继续将,添加到缓冲区
        }
    }

    // Arrays工具类中的binarySearch0源码
    private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {
        int low = fromIndex; // 0,最小索引
        int high = toIndex - 1; // a.length - 1;最大索引

        while (low <= high) { // 最小索引小鱼等于最大索引可以循环判断
            int mid = (low + high) >>> 1; // 向右移1位,相当于除以2,求出中间索引值,(最小+最大)/2
            int midVal = a[mid]; // 通过中间索引获取中间值

            if (midVal < key) // 中间索引对应的值小于查找的值
                low = mid + 1; // 最小索引变化
            else if (midVal > key) // 中间索引对应的值大于查找的值
                high = mid - 1; // 最大索引变化
            else
                return mid; // key found //找到了
        }
        return -(low + 1); // key not found. //没找到,返回 -插入点-1
    }

}
数组工具类 数组工具类, 1.设计一个数组工具类,该类为用户提供下面几个方法: (1)求最大值方法,参数是int数组,返回值是数组最大值; (2)求最小值的方法,参数是int数组,返回值是数组最小值; (3)求平均值的方法,参数是int数组,返回值是数组平均值; (4)求和的方法,参数是int数组,返回值是数组元素的和; (5)对数组元素排序的方法;两个参数,一个参数是int型数组,第二个参数是升降序标志,返回值是排序后的数组。 2)设计一个测试类,在该类的方法中对1)中的各个方法进行测试。 立即下载

相关推荐

从CPRI到eCPRI:手把手教你用Wireshark分析基站前传协议帧结构

本文手把手教你使用Wireshark工具,深入解析从CPRI到eCPRI的基站前传协议帧结构。通过搭建分析环境、编写解析脚本,并对比两者在时延管理、帧格式及数据封装上的差异,为无线通信领域的研发与测试人员提供了一套实用的逆向分析与故障排查方法。

x8y9z0的博客 605

数组及排序与工具类(Arrays类)

数组概述 数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据,按照一定的先后顺序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 数组声明创建 首先必须声明数组变量,才能在程序中使用数组, 声明数组变量的语法: dataType[] arrayRefVar;//首选 dataType arrayRefVar[];//效果相同 java语言使用new操作符来创建数组 语法如下: dataType[] arrayRefVar = new dataType[a

ywwl123的博客 891

告别高延迟!用RV1106+4G模块+libdatachannel搭建低功耗WebRTC监控,保姆级避坑指南

本文详细介绍了如何利用RV1106低功耗处理器、4G模块和libdatachannel库构建嵌入式WebRTC监控系统,解决高延迟问题。通过硬件选型、系统优化和核心代码实现,提供了一套完整的低功耗实时视频传输方案,特别适合智能安防和工业物联网应用。

weixin_42527401的博客 193

数组+Arrays工具类+排序+二维数组

Arrays工具类定义相同数据类型的集合长度固定 内存连续 有序声明和创建声明:数据类型[ ] 数组名;数据类型 数组名[ ];栈和堆栈: 由操作系统自动分配释放 (先进后出后进先出堆:一般由程序员负责分配释放 (先进先出) 一棵树连续固定内存 有序数组的长度arr.length 获取数组开辟的长度数组的下标从0开始 ,最大长度-1通过下标获取数组元素 数组名[下标]元素长度是固定的,但是值可以赋值下标越界数组循环利用下标。从0开始。

m0_62669839的博客 179

1G/2.5G Ethernet PCS/PMA or SGMII

SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,所以总的数据速率为1.25Gbps=625Mbps*2。参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息。

sqzjiayou的博客 1万+

WSL2+Ubuntu-22.04搭建PX4仿真环境:从零避坑到一键起飞

本文详细指导在Windows系统上通过WSL2和Ubuntu-22.04搭建PX4仿真开发环境的完整流程,涵盖环境配置、源码下载、依赖安装、Gazebo仿真及常见错误解决方案,帮助开发者从零避坑实现无人机一键起飞仿真。

k8s6orchestrator的博客 670

java - 数组工具类Arrays

在Java中,Arrays是一个提供了各种数组操作的工具类。它包含了许多静态方法,用于对数组进行排序、搜索、复制、填充等操作。Arrays类可以用于处理基本类型数组和对象类型数组。Arrays类提供的方法可以大大简化对数组的操作,使得代码更加简洁和高效。它可以帮助开发人员快速完成常见的数组操作,而不需要手动编写复杂的循环和逻辑。

weixin_73869209的博客 2163

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

AI人人懂 301

Java 数组排序工具类

SortUtil: import java.util.Arrays; /** * @Author : JCccc * @CreateTime : 2020/2/01 * @Description : **/ public class SortUtil { //封装好的方法排序 public static void ArraysSort(int[] ...

默默不代表沉默 1691

从0到1:用Claude 3.7十日拿下教育部课题申报书(附可修改LaTeX模板)

🟣"作为教育部人文社科项目评审专家,请根据近三年立项数据分析,为[您的学科方向]领域推荐5个具有创新性且符合'十四五'规划的重点选题,要求选题体现交叉学科特征,并标注潜在理论突破点"🟣"根据前期研究基础,创建包含4个研究模块、12个关键节点的三维技术路线图,要求体现实验仿真-实证研究-理论建模的螺旋递进关系,并标注每个节点的预期成果形态"🟣"现在切换至教育部学科评审组组长模式,从选题价值、创新程度、研究可行性三个维度对本申报书进行盲审,生成包含9个扣分风险点的诊断报告及修改优先级排序"

智能AI让学术科研更容易 545

如何使用Github创建一个完全免费的个人网站

摘要: 本文详细介绍如何利用Github Pages免费搭建个人静态网站,适合零基础用户。首先需注册Github账号并创建特定命名的仓库(格式:用户名.github.io),然后通过网页或命令行创建index.html文件作为网站首页。完成后可通过"仓库设置- Pages"获取网站链接。文章还包含GitHub Desktop的安装使用、代码提交指南及常见问题自检方法,并说明即使Github被墙也可迁移至国内平台(如码云)。整个过程无需编程基础,仅需15分钟即可完成基础网站搭建。

安德洛夫 1514

数组的工具,Arrays工具类

Arrays工具类的常用方法,混个眼熟,别等用的时候找不到!!!

Best_jiangX的博客 1351

AI智能体丨使用Coze一键生成爆款书单视频,3个月内获赞131.1w!(附保姆级教程)

这篇教程详细介绍了如何使用扣子(Coze)平台的AI智能工作流批量制作爆款书单视频。通过自动化流程,只需1-2分钟即可生成45-50秒的书单视频,效率提升近百倍。工作流包含文案生成、音频合成、图片素材获取、视频剪辑等全流程,支持随机生成8本书单、自动提取金句、智能配音等功能。教程提供了完整的操作步骤,包括剪映草稿配置、特效添加等细节,并附体验链接和示例效果。最终生成的视频包含书单展示、金句字幕、背景音乐等元素,适合书单号运营者快速批量产出内容。

李同学Lino的博客 2355

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

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

weixin_44554794的博客 1787

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

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java基础06(数组进阶 Arrays工具类)

第一种方式是通过for循环:因为数组的每个元素都可以通过索引来访问,因此,使用标准的for循环可以完成一个数组的遍历:初始条件为i=0,因为索引总是从0开始,继续循环的条件为i < ns.length,因为当i = ns.length时,i已经超出了索引范围(索引范围是0 ~ ns.length-1),每次循环后,i++实现索引递增。

qq_52897007的博客 1446

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java杂记】工具类:数组工具类 Arrays

在文章开头,我们先看看工具类通用的特征: 构造器必须是私有的。这样的话,工具类就无法被 new 出来,因为工具类在使用的时候,无需初始化,直接使用即可,所以不会开放出构造器出来。 工具类的工具方法必须被 static、final 关键字修饰。这样的话就可以保证方法不可变,并且可以直接使用,非常方便。 我们需要注意的是,尽量不在工具方法中,对共享变量有做修改的操作访问(如果必须要做的话,必须加锁),因为会有线程安全的问题。除此之外,工具类方法本身是没有线程安全问题的,可以放心使用。 1.Arrays Ar

A minor 2195

Arrays 工具类详解

Arrays类是处理数组的 “瑞士军刀”,掌握其核心方法能极大简化代码:排序用sort(),支持自然排序和自定义排序;搜索用,前提是数组有序;复制用copyOf()和 copyOfRange(),灵活处理数组长度;转换用asList(),但需注意其固定大小特性;比较用 equals()和 deepEquals(),区分一维与多维数组。

Java孩子的博客 1299

Java Arrays工具类详解

全面性:覆盖数组操作的各个方面高效性:底层使用优化算法实现便利性:静态方法调用简单直接小数组直接使用Arrays方法大数组考虑使用并行方法(如需要复杂操作时可结合Stream API使用Java 17 Arrays文档。

weixin_52242569的博客 1370

Arrays-数组工具类

文章目录概念练习 概念 Arrays存放在util包下 java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组相关操作。 public static toString(数组):将参数数组变成字符串,(按照默认格式:[元素1,元素2,元素3]) public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序 备注: 如果是数值,sort默认按照从小 到大 如果是字符串,sort默认按照字母升序 如果是自定义的类型,那么这个自定义

m0_51045721的博客 787

【Java基础】——集合工具类Collections和数组工具类Arrays

android培训------我的java笔记,期待与您交流! 一、集合工具类Collections 1、什么是Collections? Collections是对集合框架的一个工具类。它里边的方法都是静态的,不需要创建对象。并未封装特有数据。在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二分查找,随机排序等。 2、常见操作 ①查找 T ma

lucas的编程之旅 4056

Java基础系列27-常用api之数组排序和Arrays工具类

文章目录一. 数组的冒泡排序1.1 图解说明数组的冒泡排序1.2 代码实现二. Arrays工具类参考: 一. 数组的冒泡排序 冒泡排序 :相邻的两个元素两两比较,元素值较大的元素依次向后置换. 冒泡排序的基本原理:   相邻元素两两比较,大的往后放。   第一次比较,比较完毕后,最大值就出现在了最大索引处。   第二次比较,比较完毕后,次最大值就出现在了次最大索引处   …   最终我们得到了一个排序好的数组 交换两个数 Q:如何交换两个数据呢? int a = 10; int b = 20; A:采用临

只是甲的博客 1万+

Collections 工具类和 Arrays 工具类常见方法总结

Collections 工具类和 Arrays 工具类常见方法 Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list...

weixin_39940206的博客 2221

Arrays工具类教你优雅地管理数组数据

数组专用工具类指的是 类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用。毕竟数组本身想完成这些操作还是挺麻烦的,有了这层封装,就方便多了。 方法一览 方法名 简要描述 asList() 返回由指定数组支持的固定大小的列表。 sort() 将数组排序(升序) parallelSort() 将指定的数组按升序排序 binarySearch() 使用二分搜索法快速查找

2501_92589102的博客 885

Day5】数组:初始化、遍历、排序与常用 API(Arrays 工具类)

哈喽,各位 Java 学习者!欢迎来到《Java 学习日记》的第五篇内容~ 前四天我们掌握了变量、运算符和流程控制,今天要解锁 Java 中 “批量处理数据” 的核心工具 —— 数组。数组是存储同类型数据的容器,能让我们高效管理一组相同类型的变量(比如全班同学的成绩、一周的温度)。本文会从数组的初始化、遍历、排序,到 Arrays 工具类的实战,全方位拆解数组的用法,帮你搞定 “批量数据处理” 的核心场景!

maihuohuo的博客 973

Arrays工具类详解

本文详细介绍了Java中`Arrays`工具类的常用方法,包括数组转字符串、排序、查找、填充、拷贝等操作。通过代码示例展示了`Arrays.toString()`、`Arrays.deepToString()`、`Arrays.sort()`、`Arrays.binarySearch()`等方法的使用场景和注意事项,帮助开发者高效处理数组操作。

m0_73941339的博客 925

数组的Arrays工具类

数组的Arrays工具类 数组的简介参考 http://c.biancheng.net/java/70/ Arrays 类是一个工具类,其中包含了数组操作的很多方法。这个 Arrays 类里均为 static 修饰的方法(static 修饰的方法可以直接通过类名调用),可以直接通过 Arrays.xxx(xxx) 的形式调用方法。 package com.qh.array; import java.util.Arrays; public class ArraysTest { public st

未来会更好的博客 294
下一篇: Java常见类型转换
Google_Coder
博客等级 码龄10年 8粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值