java稀疏数组(java稀疏数组算法题)

  本篇文章为你整理了java稀疏数组(java稀疏数组算法题)的详细内容,包含有java稀疏数组用的多吗 java稀疏数组算法题 JAVA稀疏数组 使用java代码将一个稀疏数组试着转化成为java数组 java稀疏数组,希望能帮助你了解 java稀疏数组。

  当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组

  稀疏数组,记录一共有几行几列,有多少个不同值

  把具有不同值的元素和行里了及值记录在一个小规模的数组中,从而缩小程序的规模!

  我们定义一下原始数组:

  

原始数组如下:

 

  0 0 3 0 0

  0 0 0 0 4

  0 0 0 5 0

  0 0 6 0 0

  0 0 0 0 0

  

 

  可以看出,这个数组大部分都是0,我们可以把这个数组转化为稀疏数组

  稀疏数组第一行存放的分别是总行数,总列数和存放的数据总数

  

//因为数组的下标是从0开始的,所以可以看出,第一行的第三个数,用下标表示,实际上是数组[0][2]

 

   5 5 4

   0 2 3

   1 4 4

   2 3 5

   3 2 6

  

 

  下面看一下如何实现这种稀疏数组,又是如何把稀疏数组还原成

  代码示例:

  

package com.ling.array;

 

  public class ArrayDemo11 {

   public static void main(String[] args) {

   int[][] array=new int[5][5];

   array[0][2]=3;

   array[1][4]=4;

   array[2][3]=5;

   array[3][2]=6;

   System.out.println("原始数组如下:");

   for (int[] ints : array) {

   for (int anInt : ints) {

   System.out.print(anInt+" ");

   System.out.println();

   System.out.println("行"+"\t"+"列"+"\t"+"存放的数据"+"\t");

   //稀疏数组第一行存放的分别是总行数,总列数和存放的数据总数

  // System.out.println(5+"\t"+5+"\t"+4);

  // System.out.println(1+"\t"+3+"\t"+3);

  // System.out.println(2+"\t"+5+"\t"+4);

  // System.out.println(3+"\t"+4+"\t"+5);

  // System.out.println(4+"\t"+3+"\t"+6);

   int sum=0;

   for (int i = 0; i i++) {

   for (int j = 0; j j++) {

   if (array[i][j]!=0){

   sum++;

   int[][] arr2=new int[sum+1][3];

   //这个二维数组的第一行是确定的

   arr2[0][0]=5;

   arr2[0][1]=5;

   arr2[0][2]=sum;

   int count=0;

   for (int i = 0; i array.length; i++) {

   for (int j = 0; j array[i].length; j++) {

   if (array[i][j]!=0){

   count++;

   arr2[count][0]=i;

   arr2[count][1]=j;

   arr2[count][2]=array[i][j];

   System.out.println("输出稀疏数组");

   for (int[] ints : arr2) {

   for (int anInt : ints) {

   System.out.print(anInt+" ");

   System.out.println();

  

 

  输出:

  

输出原始的数组

 

  0 0 0 0 0 0 0 0 0 0 0

  0 0 1 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 2 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  有效值的个数:2

  输出稀疏数组:

  11 11 2

  1 2 1

  3 2 2

  =========分========割==========线=============

  我们也可以把稀疏数组进行一个还原

  打印还原后的数组

  0 0 0 0 0 0 0 0 0 0 0

  0 0 1 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 2 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  0 0 0 0 0 0 0 0 0 0 0

  

 

  以上就是关于稀疏数组的讲解,有不理解的可以跟着代码试一下,然后自己创建一个数组,并把数组转换为稀疏数组!再试着转换回来。

  以上就是java稀疏数组(java稀疏数组算法题)的详细内容,想要了解更多 java稀疏数组的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: