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

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

一、冒泡排序

简介(原理)

升序为例:

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

小的交换到前面

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

代码实现:

java 复制代码
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(数组名)

将数组转换为字符串

例:

java 复制代码
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);
    }
}

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

java 复制代码
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()方法进行排序

例:

java 复制代码
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

例:

java 复制代码
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 型数组的每个元素。

例:

java 复制代码
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的元素

java 复制代码
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 填充(如有必要),以使副本具有指定的长度。

java 复制代码
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)

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

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

java 复制代码
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 - 要复制的数组元素的数量。

java 复制代码
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类中查找数组元素的方法之前,要对数组进行排序,否则不能保证查找结果的正确性

java 复制代码
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 型数组的范围,以获得指定的值。注意:查找范围包含开始下标元素,不包括结束下标元素值

java 复制代码
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);


    }
}
相关推荐
你怎么知道我是队长3 小时前
C语言---枚举变量
c语言·开发语言
李慕婉学姐3 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫3 小时前
quecpython中&的具体含义和使用场景
开发语言·python
じ☆冷颜〃3 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
云栖梦泽3 小时前
易语言中小微企业Windows桌面端IoT监控与控制
开发语言
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE34 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
楚来客4 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
Echo_NGC22375 小时前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
会员果汁5 小时前
leetcode-动态规划-买卖股票
算法·leetcode·动态规划