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 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices7 分钟前
C++如何调用Python脚本
开发语言·c++·python
Daniel 大东8 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
wind瑞14 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen15 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
SoraLuna17 分钟前
「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
算法·macos·动态规划·cangjie
马剑威(威哥爱编程)20 分钟前
读写锁分离设计模式详解
java·设计模式·java-ee
我狠狠地刷刷刷刷刷20 分钟前
中文分词模拟器
开发语言·python·算法
鸽鸽程序猿21 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
修道-032321 分钟前
【JAVA】二、设计模式之策略模式
java·设计模式·策略模式