【Java基础学习笔记】4、数组及数组排序


一、数组简单介绍

1、数组的定义

数组是用来储存固定大小的同种类型元素的集合。
数组变量是引用变量。

(1)声明数组

数组类型[ ] 数组名称;

int[] num;//整数数组
char[] character;//字符数组
boolean[] flag;//布尔类型数组

(2)创建数组

使用new命令来创建一个新的数组。

int[] num;//整数数组
num=new int[10];//创建新的数组,并将这个数组的引用赋值给num

同样,可以将(1)和(2)中的步骤合二为一:

int[] num=new int[10];
//声明数组变量,创建新数组,并将新数组的引用赋值给声明的数组变量

常用定义数组共有三种方法:

int[] num=new int[5];//方法1

int[] num=new int[]{
    
    1,2,3,4,5};//方法2

int[] num={
    
    1,2,3,4,5};//方法3
//数组下标从0开始,到(数组长度-1)结束。

2、数组常用方法

(1)输出一个数组

需要导入java.util.Arrays,调用Arrays.toString(数组名)方法。
代码示例

import java.util.Arrays;//导入包

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        int[] src = {
    
    1,2,3,4,5,6};
        System.out.println(Arrays.toString(src));//调用方法
    }
}

结果如下:
在这里插入图片描述

(2)将字符串转化为字符数组

利用toCharArray()方法,声明 字符数组=字符串变量.toCharArray()。
代码示例:

public static void main(String[] args) {
    
    
        String str="goodbye";
        char[] ch=str.toCharArray();
        System.out.println(Arrays.toString(ch));
    }

结果如下:
在这里插入图片描述

(3)数组的复制

使用Arrays.copyOf()方法。
声明的新数组=Arrays.copyOf(原数组,新数组长度);
代码示例:

public static void main(String[] args) {
    
    
        int[] num={
    
    1,2,3,4,5};
        int[] newnum=Arrays.copyOf(num,7);
        System.out.println(Arrays.toString(newnum));
    }

结果如下:
在这里插入图片描述
Arrays.copyOf()方法是整个复制数组,有时候显得不够灵活,此时可以使用System.arraycopy()方法。
System.arraycopy(原数组,原数组开始复制的下标,新数组,新数组开始粘贴的下标,复制长度);
代码如下:

public static void main(String[] args) {
    
    
        int[] num={
    
    1,2,3,4,5};
        int[] newnum=new int[6];
        System.arraycopy(num,1,newnum,0,3);
        /*
        原数组num,num[1]开始复制,新数组newnum,
        newnum[0]开始复制,一共复制3位。
		*/
        System.out.println(Arrays.toString(newnum));
    }

结果如下:
在这里插入图片描述
相比Arrays.copyOf()方法来说,System.arraycopy()更加灵活,但是需要注意复制长度过长和复制粘贴起始下标的值,防止下标越界的问题。

二、数组排序

(1)Arrays.sort()方法

Arrays.sort(数组名),这是一个void方法,没有返回值,原数组中的数字会从小到大排好。
代码示例:

public static void main(String[] args) {
    
    
        int[] num={
    
    32,3,41,5,66,74};
        System.out.println(Arrays.toString(num));//原数组
        Arrays.sort(num);//进行排序
        System.out.println(Arrays.toString(num));//排序后的数组
    }

结果如下:
在这里插入图片描述

(2)冒泡排序

冒泡排序是一种简单的排序算法,通过遍历比较相邻的两个元素(设从小到大排),将放置位置错误的元素(大–小)交换顺序(小–大)。重复工作直到没有元素需要进行交换,说明排序工作已经完成。如同汽水中的泡泡缓慢浮出水面,故以此命名。冒泡排序是一种稳定的排序方式
代码示例:

public static void main(String[] args) {
    
    
        int[] arr={
    
    33,4,32,56,7,45};
        System.out.println(Arrays.toString(arr));//原数组
        for(int i = 0; i < arr.length - 1; i++) {
    
    
        /*一次次遍历,每次都有一个数浮出水面(不需再比),
        故每次遍历长度减1*/
            for(int j = 0; j < arr.length - 1 - i; j++) {
    
    
            /*每次遍历时比较相邻两个数大小,
            若错误便交换位置(示例为从小到大)
            */
                if (arr[j] > arr[j + 1]) {
    
    
                /*使用局部变量储存arr[j]的值,arr[j]被赋arr[j+1]
                的值后再将储存着arr[j]的值的temp的值赋予arr[j+1]
                完成值的交换
                */
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    //tip:相同变量相邻,arr[j]挨着,arr[j+1]也挨着
                }
            }
        }
        System.out.println(Arrays.toString(arr));//输出排序后的数组
    }

结果如下:
在这里插入图片描述

(3)选择排序

选择排序是一种简单直观的排序算法,从数组中选择出一个最大/最小的数值,将其放在最前面,再从剩下未排序的数组中选择出一个最大/最小的数,放在已排序的数组的末尾,以此类推,直到未排序的数据元素个数为零。相比冒泡排序,选择排序更快捷,但是更不稳定。
代码示例:

public static void main(String[] args) {
    
    
        int[] num={
    
    23,45,3,123,22,37,75};
        System.out.println(Arrays.toString(num));//输出原数组
        for (int i = 0; i < num.length; i++) {
    
    
            int temp = i;//假设未排序数组第一个元素最小
            //遍历剩下的元素
            for (int j = i; j < num.length; j++) {
    
    
                if (num[temp] > num[j]) {
    
    
                    temp = j;//当发现比目前下标元素更小的,更换标记下标
                }
            }
            //交换两个元素位置
            int t = num[i];
            num[i] = num[temp];
            num[temp] = t;
        }
        System.out.println(Arrays.toString(num));//输出数组
    }

结果如下:
在这里插入图片描述

(4)插入排序

插入排序是一种简单的排序算法,适合少量元素的排序,其基本思想是在已经排好序的数组中插入新元素,从而生成一个元素个数+1的新数组。插入排序是一种稳定的排序方式。
代码示例:

public static void main(String[] args) {
    
    
        int[] num={
    
    23,16,95,74,93};
        System.out.println(Arrays.toString(num));//输出原数组
        for (int i=1;i<num.length;i++) {
    
    
            for(int j=i;j>0&&(num[j]<(num[j-1]));j--) {
    
    
                int temp=num[j];
                num[j]=num[j-1];
                num[j-1]=temp;
            }
        }
        System.out.println(Arrays.toString(num));//输出新数组
    }

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_53743140/article/details/114180956