首页 > 编程语言 >java中的稀疏数组

java中的稀疏数组

时间:2022-10-14 17:36:11浏览次数:47  
标签:java int array2 array1 稀疏 System 数组 out

Java的稀疏数组

本节内容的主要需要注意的是数组转换时的下标

package array;

public class ArrayDemo06 {
   //创建一个二维数组 11*11 0:没有旗子 1:黑棋 2:白棋
   public static void main(String[] args) {
       int [] [] array1 = new int[11][11];
       array1[1][2]=1;
       array1[2][3]=2;//给二维数组定义两个数
       array1[4][5]=1;
       array1[5][6]=2;
       array1[6][7]=1;
       //输出原始数组;
       System.out.println("输出原始数组");
       //遍历原始数组的代码
       for (int [] ints:array1){
           for (int anInt:ints){
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
       //创建稀疏数组
       //得到原始数组的数据,如不同元素的个数,下标、具体值。
       int sum=0;
       for (int i = 0; i < array1.length; i++) {       //这两行的代码为遍历数组,行循环
           for (int j = 0; j < array1.length; j++) {   //每一行的列循环
               if (array1[i][j]!=0){
                   sum++;
              }
          }
      }
       System.out.println("原始数据不同数值的个数为:"+sum);
       //先创建一个三列的二维数组
       int [] [] array2 = new int[sum+1][3];           //下面这三行代码为定义稀疏数组的表头
       array2[0][0]=11;                                //对稀疏数组的第一行的数据进行定义,值为二维数组的行数
       array2[0][1]=11;                                //定义第一行的第二个元素,值为二维数组的每一行的列数
       array2[0][2]=sum;                               //定义第一行的第三个元素,值为二维数组中的不同数值的个数
       int count = 0;
       for (int i = 0; i < array1.length; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if (array1[i][j]!=0){
                   count++;
                   array2[count][0]=i;                 //不同数字它的x坐标,也就是他的列下标
                   array2[count][1]= j;                //不同数字它的y坐标,也就是他的列下标
                   array2[count][2]=array1[i][j];      //将不同元素的具体的数值放在第三个元素中
              }
          }
      }
       System.out.println("输出稀疏数组:");
       for (int i = 0; i < array2.length; i++) {       //外循环,进行行数的循环
           for (int j = 0; j < array2[i].length; j++) {   //内循环,进行每一行的多个元素的循环
               System.out.print(array2[i][j]+"\t");    //打印每一行的数据
          }
           System.out.println();                       //每一行输出完,换行输出下一行的数据
      }

       //再把稀疏数组转换为原始数组
       System.out.println("输出稀疏数组转换后的原始数组:");
       int [] [] array3 = new int[array2[0][0]][array2[0][1]]; //读取稀疏数组中表头中存放的原始数组的行数和列数。
       for (int i = 1; i <array2.length ; i++) {
           for (int j = 0; j < array2[i].length; j++) {
               array3[array2[i][0]][array2[i][1]]=array2[i][2];//因为数组默认全是零。只需要读取不同元素的行列值并赋值就行了
          }
      }
       for (int [] ints:array3){
           for (int anInt:ints){
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
  }

}
 

标签:java,int,array2,array1,稀疏,System,数组,out
From: https://www.cnblogs.com/zhazhawei906/p/16792369.html

相关文章

  • Elasticsearch——java api构建搜索
    版本不同版本的elasticsearch-rest-high-level-client和elasticsearch之间存在兼容风险,请确保和elasticsearch版本一致,否则会出现无法预计的错误。es配置maven依赖<dep......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百一十六题-数组去重
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • Elasticsearch——JavaApi实现索引管理
    版本不同版本的elasticsearch-rest-high-level-client和elasticsearch之间存在兼容风险,请确保和elasticsearch版本一致,否则会出现无法预计的错误。es配置maven依赖<dep......
  • javascript缩短今天的时间为时分秒格式
    我们的需求是,今天的日期只显示HH:mm:ss,这种时分秒格式看下面两个函数//今天零点functiongetTordayZero(){returnnewDate(newDate().toLocaleDateString())......
  • Java基础(五)| 方法的定义、调用及重载
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • [2022.10.14]Java方法
    加上static变成类变量Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方......
  • java语言概述
    java语言的平台版本1JavaSE标准版2JAVAEE企业版3JAVAME小型版电脑的两种操作方式1图形化界面2命令行(功能更强大)在黑窗口转换路径:d:加回车    查看当前......
  • js 数组对象中每一项对象属性比较大小与计算数组对象属性和
    //数组对象排序方法 exportfunctioncompare(property){   returnfunction(a,b){    constvalue1=a[property]    constvalue2......
  • java_day12
    Java基础Java集合框架什么是集合?​ 对象的容器,定义了对多个对象进程操作的常用方法。可实现数组的功能。与数组的区别是什么?1.数组长度固定,集合长度是不固定1.数组......
  • 使用循环处理数组
    #include<iostream>#include<string.h> #include<limits.h>#include<float.h>#pragmawarning(disable :4996)#defineSIZE10#definePAR72usingnamespacestd;in......