Java入门基础知识第八课(数组)——冒泡排序、Arrays工具类

前面二白讲了关于数组的概念、语法以及简单的输入输出,实际上关于数组的知识还有很多,接下来咱们讲一下冒泡排序以及一些常用的Arrays工具类,需要记忆的知识很多,而且容易混淆。

一、冒泡排序

简介(原理)

升序为例:

从头开始,每次比较相邻两数

小的交换到前面

每轮结束后最大的数交换到最后

代码实现:

package com.kgc.se;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 8:50
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo01 {
    public static void main(String[] args) {
//        使用双重for循环实现对数组的升序排序

        int[] nums = {96,45,87,32,11,55,88,30,19,44,63};

        //在排序前输出数组中所有的元素
        System.out.println("数组排序前:");
        for(int i =0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
        System.out.println();

        //升序排序
        //外层循环变量控制比较的轮数
        for(int i =0;i<nums.length-1;i++){
            //内层循环变量控制每一轮的比较次数
            for(int j =0;j< nums.length-1-i;j++){
                //比较相邻的两个元素
                if(nums[j]>nums[j+1]){
                    //交换位置
                    int temp = nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }

        //排序结束后,遍历数组
        System.out.println("数组排序后:");
        for(int i =0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
    }
}

二、Arrays工具类

1.String Arrays.toString(数组名)

将数组转换为字符串

例:

package com.kgc.se;

import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        String string = Arrays.toString(demo);
        System.out.println(string);
    }
}

也可以简写直接输出,结果一样

package com.kgc.se;

import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
    }
}

2.Arrays.sort(数组名)

对数组进行升序排序,可以写冒泡排序代码,也可以直接使用Arrays类中的sort()方法进行排序

例:

int[] nums = {56,36,78,12,95,40,33};
        System.out.println("数组排序前:");
        System.out.println(Arrays.toString(nums));
        Arrays.sort(nums);
        System.out.println("数组排序后:");

3.boolean Arrays.equals(数组名1,数组名2)

比较两个数组是否相同,如果两个数组中的元素个数,对应下标上的元素值相同,返回true,否则返回false

例:

package com.kgc.se;

import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        int [] demo1 = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
        boolean result = Arrays.equals(demo,demo1);
        System.out.println("result = " + result);

    }
}

4.Arrays.fill()

1)static void fill(int[] a, int val)

将指定的 int 值分配给指定 int 型数组的每个元素。

例:

package com.kgc.se;

import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        Arrays.fill(demo,250);
        System.out.println(Arrays.toString(demo));

    }
}

 

2)static void fill(int[] a, int fromIndex, int toIndex, int val)

将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。注意:包含fromIndex的元素,不包含toIndex的元素

package com.kgc.se;

import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");

        Arrays.fill(demo,2,4,250);
        System.out.println(Arrays.toString(demo));

    }
}

5.Arrays.copyOf

static int[] copyOf(int[] original, int newLength)

复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。

package com.kgc.se;

import java.sql.Array;
import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};

        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        int[] demo1 =  Arrays.copyOf(demo,4);
        System.out.println(Arrays.toString(demo1));

    }
}

6.Arrays.copyOfRange

static int[] copyOfRange(int[] original, int from, int to)

将指定数组的指定范围复制到一个新数组。

注意:包含开始下标的元素值,不包含结束下标的元素值

package com.kgc.se;

import java.sql.Array;
import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};

        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        int[] demo1 = Arrays.copyOfRange(demo,2,5);
        System.out.println(Arrays.toString(demo1));

    }
}

扩展:除了上面的Arrays类中的copyOf()方法和copyOfRange()方法可以复制数组,System类中也有一个方法可以复制数组

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

src - 源数组。

srcPos - 源数组中的起始位置。

dest - 目标数组。

destPos - 目标数据中的起始位置。

length - 要复制的数组元素的数量。

package com.kgc.se;

import java.sql.Array;
import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        int[] demo1 = new int[10];
        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        System.arraycopy(demo,3,demo1,1,4);
        System.out.println(Arrays.toString(demo1));

    }
}

7.Arrays.binarySearch

1)static int binarySearch(int[] a, int key)

使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。

注意:使用Arrays类中查找数组元素的方法之前,要对数组进行排序,否则不能保证查找结果的正确性

package com.kgc.se;

import java.sql.Array;
import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        Arrays.sort(demo);
        System.out.println(Arrays.toString(demo));
        int index = Arrays.binarySearch(demo,8);
        System.out.println("8的值在数组中的下标为: " + index);


    }
}

2)static int binarySearch(int[] a, int fromIndex, int toIndex, int key)

使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。注意:查找范围包含开始下标元素,不包括结束下标元素值

package com.kgc.se;

import java.sql.Array;
import java.util.Arrays;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:59
 * QQ:1512015112
 * VX:18056394367
 */


public class Demo {
    public static void main(String[] args) {
        int [] demo = {1,3,5,7,27,8,22};
        System.out.println(Arrays.toString(demo));
        System.out.println("--------------------------");
        Arrays.sort(demo);
        System.out.println(Arrays.toString(demo));
        int index = Arrays.binarySearch(demo,2,6,8);
        System.out.println("8的值在数组中的下标为: " + index);


    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 用户登录界面 管理员主界面 员工基本档…

知道做到 一篇总结学习方法的笔记

元数据 [!abstract] 知道做到&#xff1a;跃迁式学习 书名&#xff1a; 知道做到&#xff1a;跃迁式学习作者&#xff1a; 彼得•霍林斯简介&#xff1a; 学习是改善你的生活环境、成为你想成为的人的关键。科学的方法能加速学习进程&#xff0c;让你事半功倍。技能、信息和能力…

openkylin系统通过网线连接ubuntukylin系统上网攻略

openkylin系统通过网线连接ubuntukylin系统上网攻略 主机1&#xff1a;x64 amd &#xff0c;系统&#xff1a;ubuntukylin 22.04 &#xff0c;状态&#xff1a;通过wifi连接热点进行上网&#xff0c;并共享网络。 主机2&#xff1a;x64 intel &#xff0c;系统&#xff1a;ope…

5.x 版本 CallKit SDK 无法弹起通话界面

5.x 版本 CallKit SDK 作为接听方在前台的情况下无法弹起通话界面&#xff0c;作为拨打方能正常弹起通话界面 分析&#xff08;根因分析、需求分析&#xff09; CallKit SDK 初始化依赖于 IMKit SDK 初始化&#xff0c;如果您使用 IMLib SDK 的方法初始化的话&#xff0c;会导…

告别百年激进笔记

系列文章目录 八次危机笔记 告别百年激进笔记 文章目录 系列文章目录前言导图第一部分 资本全球化的宏大叙事第一节 人类创造的两个异化物第二节 全球资本化与制度性致贫第三节 国家竞争的“微笑曲线”第四节 欧债危机实属政治危机第五节 日本研究中的另类思考第六节 从…

流程图的新语法-mermaid的快速使用--推荐

chatgpt或者现在的大数据采用的流程图给出的代码如下&#xff1a; graph TD;A[接收客户请求] --> B[问题分类];B --> C[技术支持];B --> D[维修服务];C --> E[远程解决];C --> F[现场支持];D --> G[维修完成];G --> H[服务反馈];style A fill:#f9f,strok…

【数据结构与算法】贪心算法及例题

目录 贪心算法例题一&#xff1a;找零问题例题二&#xff1a;走廊搬运物品最优方案问题输入样例例题三&#xff1a;贪心自助餐 贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优的选择&#xff0c;以期望最终达到全局最优解的算法。它的核心思想是每次都选择当前最…

即插即用模块详解SCConv:用于特征冗余的空间和通道重构卷积

目录 一、摘要 二、创新点说明 2.1 Methodology 2.2SRU for Spatial Redundancy​编辑 2.3CRU for Channel Redundancy 三、实验 3.1基于CIFAR的图像分类 3.2基于ImageNet的图像分类 3.3对象检测 四、代码详解 五、总结 论文&#xff1a;https://openaccess.thecvf.c…

kafka的概念以及Zookeeper集群 + Kafka集群 +elfk集群

目录 zookeeper同步过程 分布式通知和协调 zookeeper同步过程 分布式通知和协调 准备 3 台服务器做 Zookeeper 集群 192.168.68.5 192.168.68.6 192.168.68.7 安装前准备 //关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 node1服务器&a…

Linux进阶篇:性能监控工具:socket 统计信息

Linux性能监控工具&#xff1a;socket 统计信息 1 ss命令介绍 ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息&#xff0c;它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息&#xff0c;而且比 netsta…

ssm052游戏攻略网站的设计与实现+vue

游戏攻略网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本游戏攻略网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

使用avx2 指令集加速向量算法运算

使用cpu-z 查看cpu指令集 2 向量加&#xff0c;乘法&#xff0c;除法 我们使用向量加&#xff0c;为什么函数是0 到 8 的计算&#xff0c;因为avx2 寄存器为256位&#xff0c;同时设置启动增强指令集 #include <immintrin.h> // 引入包含AVX2指令集的头文件void vecto…

2024认证杯数学建模A题保暖纤维保暖能力原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了认证杯数学中国数学建模网络挑战赛第一阶段A题目保暖纤维的保暖能力完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品…

【Conda基础命令】使用conda创建、查看、删除虚拟环境及可能的报错处理

文章目录 前言&#xff08;1&#xff09; 在默认路径下创建一个新的虚拟环境&#xff08;2&#xff09; 查看已有的虚拟环境&#xff08;3&#xff09; 删除已有的虚拟环境&#xff08;谨慎操作&#xff09;&#xff08;4&#xff09;激活虚拟环境&#xff08;5&#xff09;退出…

社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;服务种类管理 &#xff08;3&#xff09;社区服务管理 &#xff08…

STM32F103ZE-中断

文章目录 122.12.22.32.42.52.62.6.12.6.2 33.13.23.34.14.3 56788.18.2 NVIC 管理所有中断EXTI 外部中断事件控制器 针对外部 可以看成NVIC 下属 1 中断和 中止&#xff08;不回去了&#xff09;不一样 搁一段时间就如果不用中断 用while&#xff08;&#xff09; 可能夹半天…

中伟视界:智慧矿山智能化预警平台功能详解

矿山智能预警平台是一种高度集成化的安全监控系统&#xff0c;它能够提供实时的监控和报警功能&#xff0c;帮助企业和机构有效预防和响应潜在的安全威胁。以下是矿山智能预警平台的一些关键特性介绍&#xff1a; 报警短视频生成&#xff1a; 平台能够在检测到报警时自动生成短…

记录一次内存溢出

1、查看catalina相关日志&#xff0c;确定关键字相关行号 文件&#xff1a;catalina.out命令1&#xff1a;cat -n catalina.out |grep -a OutOfMemoryError与内存溢出相关的如上&#xff0c;每一个行号其实都对应到具体时间点。可以发现&#xff0c;这个范围相符合&#xff1…

Harbor安装手册

安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager \ --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i -e /mirrors.cloud.aliyuncs.com/d -e /mirrors.aliyuncs.com/d \ /etc/yum.repos.d/…

【御控物联】Java JSON结构转换(3):对象To对象——多层属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、案例之《JSON对象 To JSON对象》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0c;生成新的JS…
最新文章