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

news2025/4/3 15:52:03

前面二白讲了关于数组的概念、语法以及简单的输入输出,实际上关于数组的知识还有很多,接下来咱们讲一下冒泡排序以及一些常用的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.coloradmin.cn/o/1580171.html

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

相关文章

浅谈LockBit勒索病毒

在数字时代&#xff0c;随着科技的飞速发展&#xff0c;网络安全问题愈发凸显。恶意软件和勒索软件等网络威胁正不断演变&#xff0c;其中一款备受关注的勒索软件就是LockBit。本文将深入介绍LockBit的特征、攻击手段及对网络安全的威胁。 主要特征 LockBit是一种高度复杂且具…

线上环境 CPU 使用率飙升如何快速排查?

相比于一大堆复杂的 JVM 调优过程&#xff0c;本文介绍的排查步骤还是挺简单的&#xff0c;可以帮助各位小伙伴排查一些简单问题&#xff0c;面试官问起来也好过啥也不会&#xff08;这个 CPU 打满如何排查我被问过好多次......&#xff09;。 模拟高 CPU 场景 这里就不麻烦地…

每日一题:矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]使用两个标记变量。 class Sol…

html基础——CSS

在HTML中&#xff0c;CSS的作用是用于控制网页的样式&#xff0c;包括字体、颜色、背景、布局等方面的设计。通过一个样例来说明CSS的作用&#xff1a; 如下是一个名为global.css的CSS文件&#xff1a; .C1{font-size: 10px;color: blue;border:1px solid red;height: 200px;…

AI写作软件哪个好?分享9AI写作工具 #其他#科技

从事自媒体运营光靠自己手动操作效率是非常低的&#xff0c;想要提高运营效率就必须要学会合理的使用一些辅助工具。下面小编就跟大家分享一些自媒体常用的辅助工具&#xff0c;觉得有用的朋友可以收藏分享。 1.七燕写作 这是一个微信公众号&#xff0c;可以进行AI对话、AI创作…

适合虚拟主持人活动的全身动作捕捉设备:VDSuit Full

在虚拟主持人领域&#xff0c;全身动作捕捉设备一直以其逼真的效果和生动的表现力备受瞩目。相比光学全身动作捕捉设备&#xff0c;惯性全身动作捕捉设备更适合应用在企业品牌虚拟主持人发布会、虚拟主持人直播等活动场合。 广州虚拟动力全身动作捕捉设备VDSuit Full&#xff0…

Java项目中使用事务

事务的四大特性 事务特性ACID&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;、持久性&#xff08;Durability&#xff09;。 原子性是指事务包含的所有操作要么全部成功&#x…

C#体检中心源码,C/S架构的健康体检系统源码,三级综合医院应用案例

健康体检管理系统源码&#xff0c;C#体检中心源码&#xff0c;三级医院应用案例。 智慧健康体检管理系统是为体检中心服务的&#xff0c;帮助体检机构实现业务市场开拓&#xff0c;实现检前、检中、检后全过程的体检健康管理。检前微信平台/网络预约登记、收费&#xff0c;检中…

Windows下docker-compose部署DolphinScheduler

参照&#xff1a;快速上手 - Docker部署(Docker) - 《Apache DolphinScheduler v3.1.0 使用手册》 - 书栈网 BookStack 下载源文件 地址&#xff1a;https://dolphinscheduler.apache.org/zh-cn/download/3.2.1 解压到指定目录&#xff0c;进入apache-dolphinscheduler-xxx-…

排序:冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序,二路归并排序

目录 一.冒泡排序 代码如下 冒泡排序时间复杂度分析 二.直接插入排序 直接插入排序时间复杂度分析 直接插入排序优化&#xff1a;折半插入排序 三.简单选择排序 简单选择排序优化&#xff1a;双向选择排序 选择排序时间复杂度 双向选择排序时间复杂度 四.希尔排序 希…

winfrom入门篇4 -- 添加控件

添加控件 打开工具箱 在公共控件中&#xff0c;选择Button 直接拖动到窗体中 运行程序 此时查看Form1.Designer.cs 在InitializeCompent() 方法中自动生成了button 相关代码 同时添加了一个button1 字段 右键按钮选择属性&#xff0c;查看属性栏 改变Text 属性 此时在观…

Excel文本内容抽取工具[Python]

#创作灵感# 一堆Excel文件&#xff0c;每个打开看太累了。写个脚本直接显示里面的内容多好。最好这些内容可以直接复制到剪切板&#xff0c;方便以后编辑修改。只需要将文件拖动到全屏置顶的文本框内&#xff0c;就能弹出Excel里的内容。支持一次选取多个文件。 开干&#xff…

快速入门Kotlin④集合

集合概述 继承关系(List、Set和Map均继承了Collection) List List 是一个接口,用于表示列表(List)数据结构。它是一个有序的集合,允许重复元素。 listOf 创建的列表是不可变的,而 mutableListOf 创建的列表是可变的,允许对其进行添加、删除和更新操作。 fun main()…

电脑实时监控软件分享|五个好用的实时屏幕监控软件

电脑实时监控软件是一种专门设计用于实时监控和记录电脑用户操作行为、系统状态以及网络活动的软件工具。 这类软件主要服务于企业、教育机构、家庭或个人用户&#xff0c;用于确保网络安全、提升工作效率、监督员工行为、保护儿童在线安全、防止数据泄露等多种目的。 针对企业…

蓝桥ROS云课一键配置f1tenth和PID绕圈(竞赛更新版)

准备资料 竞赛说明&#xff1a; ROS机器人虚拟仿真挑战赛学习笔记 之前版本&#xff1a; 蓝桥ROS云课→一键配置←f1tenth和PID绕圈 修改定制 提高调试效率&#xff0c;非常关键^_^ 配置文件&#xff1a; echo "Upgrade Mission Begins."echo "-----BEGI…

用AI作图,使用这个免费网站,快看我画的大鹏鸟和美女

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

【获取 etc passwd文件后的入侵方式】_ etc passwd 通过浏览器对外暴露

获取到/etc/passwd文件对于黑客来说可能是一个有价值的信息来源&#xff0c;因为这个文件通常包含了Linux系统中所有用户的信息&#xff08;用户名、用户ID等&#xff09;。然而&#xff0c;这个文件并不包含用户的密码&#xff0c;密码信息通常存储在/etc/shadow文件中。尽管如…

swiftUI macOS使用webview加载外部网址

import SwiftUI import WebKitstruct ContentView: View {var body: some View {VStack {Text("测试")WebView(urlString: "https://aweb123.com").frame(maxWidth: .infinity, maxHeight: .infinity) // 让 WebView 占据整个可用空间}.frame(minWidth: 20…

CSS层叠样式表学习(基础选择器)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS&#xff08;2&#xff09;的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 二、CSS基础选择器 2.1 CSS选择器的作用 2.2 选择器分类 2.3 标签选择器 2.…

C++入门 (2) >>引用>>内联函数>>auto关键字

1 引用 定义&#xff1a;给变量起别名。 方法&#xff1a;在类型后面加上&符号。 主要作用&#xff1a;代替函数传指针。 例&#xff1a; void test(int& a) //参数为int&类型 {a 10; }int main() {int m 3;int& z m; //给m起别名叫z&#xff0…