Java数组

这篇博客介绍了Java中数组的基本概念、声明创建、内存分析和初始化方式,并展示了冒泡排序算法。此外,还详细讲解了如何将二维数组转换为稀疏数组以及如何从稀疏数组恢复二维数组,这对于处理大量非零元素的数组存储非常有用。
摘要由CSDN通过智能技术生成

Java数组

一、数组的概述

数组的定义:
在这里插入图片描述

二、数组声明创建

在这里插入图片描述

三、内存分析

在这里插入图片描述

四、三种初始化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、多维数组

在这里插入图片描述

六、数组扩展

方法可以查看jdk的帮助文档。
链接:https://pan.baidu.com/s/1egk0KONzu1LUPV35Qyg4Dg
提取码:fh7f
在这里插入图片描述
在这里插入图片描述
冒泡排序:

public static int sort(int[] array){
    int container;
    for(int i=0; i<array.length-1; i++){//第一层for循环控制所有数比较的次数
        for(int j=0; j<array.length-1-i; j++){//第二次for循环控制,每次比较的次数,通过-1让下标长度最大达到数组的长度,通过-i,控制每次循环进行比较的个数
            if(array[j]<array[j+1]){
               container= array[j];
                array[j] =array[j+1];
                array[j+1]=container;
                //通过if语句,比较两个数的大小,如果前一个数没后一个数大,则交换它们的位置。通过一个空数据,来进行数的交换
            }
        }
    }
    return array;
}

在这里插入图片描述
在编写五子棋程序时,有存盘退出和续上盘的功能。
在这里插入图片描述

package org.westos.sparsearr;

public class SparseArr {
    public static void main(String[] args) {

        //创建一个二维数组 11*11
        //0表示没有棋子,1表示黑棋,2表示蓝棋
        int[][] chessArr = new int[11][11];
        chessArr[1][2] = 1;
        chessArr[2][3] = 2;
        //输出原始的二维数组
        System.out.println("原始的二维数组:");
        for (int i = 0; i < chessArr.length; i++) {
            for (int j = 0; j < chessArr[i].length; j++) {
                System.out.print(chessArr[i][j]+"\t");
            }
            System.out.println();
        }

        //将二维数组转换为稀疏数组
        //1.先遍历二维数组得到非零数据的个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (chessArr[i][j] != 0){
                    sum++;
                }
            }
        }
        
        //2.创建对应的系数数组
        int[][] sparseArr = new int[sum+1][3];
        //给系数数组赋值
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = sum;
        //遍历二维数组将非零的值存放到稀疏数组
        int count = 0;
        for (int i = 0; i < chessArr.length; i++) {
            for (int j = 0; j < chessArr[i].length; j++) {
                if (chessArr[i][j] != 0){
                    count++;
                    sparseArr[count][0] = i;
                    sparseArr[count][1] = j;
                    sparseArr[count][2] = chessArr[i][j];
                }
            }
        }
        //输出稀疏数组
        System.out.println();
        System.out.println("稀疏数组:");
        for (int i = 0; i < sparseArr.length; i++) {
            System.out.println(sparseArr[i][0]+"\t"+sparseArr[i][1]+"\t"+sparseArr[i][2]);
        }


        //将稀疏数组恢复成二维数组
        //1.先读取稀疏数组的第一行,根据第一行创建二维数组
        int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]];
        //2.读取稀疏数组后几行赋值给二维数组
        //注意这里是从第二行开始
        for (int i = 1; i < sparseArr.length; i++) {
            chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }
        System.out.println();
        System.out.println("恢复后的二维数组:");
        for (int[] row : chessArr2) {
            for (int data : row) {
                System.out.print(data+"\t");
            }
            System.out.println();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值