第十七篇 Java稀疏数组

Java稀疏数组

package com.whs.day07paixu;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.util.Arrays;

/**

  • @Author: 阿波罗

  • @Date: 2021/12/1 12:29

  • @oath: 不分白天黑夜的征途 淦!

  • @Version: 1.0.0
    */
    public class Demo51Xishushuzu {
    public static void main(String[] args) {
    //
    int[][] arr1 = new int[11][11]; //初始化 默认值都是0
    arr1[1][2] = 1;//1行 2列
    arr1[2][3] = 2;//2行 3列
    System.out.println(“输出原始的数组”);
    // for each 循环 打印数组
    for (int[] ints : arr1) {
    for (int anInt : ints) {
    System.out.print(anInt + “\t”);
    }
    System.out.println();//控制换行
    }
    System.out.println("=====================================================");
    // 转换为稀疏数组保存
    // 获取有效值的个数
    int sum = 0;
    for (int i = 0; i < arr1.length; i++) {//获取 数组的行数
    // int columns = i[0].length;
    for (int j = 0; j < arr1[i].length; j++) {//获取 数组的列数
    if (arr1[i][j] != 0) { //i 行 或 j 列 不为0时 则为有效值
    sum++;//有效值的个数
    }
    }
    }

     System.out.println("有效值个数为:" + sum + "个");
     System.out.println("======================================================");
    

//2.创建一个稀疏数组的数组
int[][] arr2 = new int[sum + 1][3];
arr2[0][0] = 11;
arr2[0][1] = 11;
arr2[0][2] = sum;
// 遍历二维数组 将非0的值 存放在稀疏数组中

    int count = 0;
    for (int i = 0; i < arr1.length; i++) {
        for (int j = 0; j < arr1[i].length; j++) {
            if (arr1[i][j] != 0) {
                count++;//记录  有效值个数    //i 行 或 j 列     不为0时  则为有效值
                arr2[count][0] = i;
                arr2[count][1] = j;
                arr2[count][2] = arr1[i][j];
            }
        }
    }

// 输出稀疏数组
System.out.println(“稀疏数组”);
for (int i=0;i<arr2.length;i++){
System.out.println(arr2[i][0]+"\t"
+arr2[i][1]+"\t"
+arr2[i][2]+"\t");
}
System.out.println("=还原稀疏数组=======");
// 1.读取稀疏数组
int[][] arr3=new int[arr2[0][0]][arr2[0][1]];
// 2.给其中的元素还原它的值
for (int i = 1; i <arr2.length ; i++) {
arr3[arr2[i][0]][arr2[i][1]]=arr2[i][2];
}
System.out.println(“打印还原稀疏数组==========”);
// 3.打印
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt + “\t”);
}
System.out.println();//控制换行
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值