• Java_稀疏数组


    上面案列的代码如下

     1 package com.wang.array;
     2 
     3 public class SparseArray {
     4     public static void main(String[] args) {
     5         // 第一步:创建一个11*11二维数组:0:无子, 1:黑子, 2:白子
     6         int[][] array = new int[11][11];
     7         array[1][2] = 1;
     8         array[2][3] = 2;
     9         for (int i = 0; i < array.length; i++) {
    10             for (int j = 0; j < array[i].length - 1; j++) {
    11                 System.out.print(array[i][j] + "	");
    12             }
    13             System.out.println();
    14         }
    15 
    16         // 第二步:把有效数据取出来,非0的数据
    17         int sum = 0;
    18         for (int i = 0; i < array.length; i++) {
    19             for (int j = 0; j < array[i].length - 1; j++)
    20                 if (array[i][j] != 0) {
    21                     sum++;
    22                 }
    23         }
    24 
    25         // 第三步:创建稀疏数组
    26         int[][] sparseArray = new int[sum + 1][3];
    27         sparseArray[0][0] = array.length;
    28         sparseArray[0][1] = array.length;
    29         sparseArray[0][2] = sum;
    30 
    31         // 第四步:给稀疏数组赋值
    32         int count = 0;
    33         for (int i = 0; i < array.length; i++) {
    34             for (int j = 0; j < array[i].length - 1; j++) {
    35                 if (array[i][j] != 0) {
    36                     count++;
    37                     sparseArray[count][0] = i;
    38                     sparseArray[count][1] = j;
    39                     sparseArray[count][2] = array[i][j];
    40                 }
    41             }
    42         }
    43 
    44         System.out.println("*****************");
    45         // 打印稀疏数组的内容
    46         for (int i = 0; i < sparseArray.length; i++) {
    47             for (int i1 = 0; i1 < sparseArray[i].length; i1++) {
    48                 System.out.print(sparseArray[i][i1] + "	");
    49             }
    50             System.out.println();
    51         }
    52 
    53         // 由稀疏数组还原为二维数组
    54         int[][] array1 = new int[sparseArray[0][0]][sparseArray[0][1]];
    55         for (int i = 1; i < sparseArray.length; i++) {
    56             for (int i1 = 0; i1 < sparseArray[i].length; i1++) {
    57                 array1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
    58             }
    59         }
    60 
    61         System.out.println("*****************");
    62         // 打印还原后的二维数组
    63         for (int i = 0; i < array1.length; i++) {
    64             for (int j = 0; j < array1[i].length - 1; j++) {
    65                 System.out.print(array1[i][j] + "	");
    66             }
    67             System.out.println();
    68         }
    69     }
    70 }

    执行后的结果

     

  • 相关阅读:
    HttpClient入门三
    Centos常用命令之:压缩与解压缩
    Centos常用命令之:搜索
    Centos常用命令之:ln
    Centos常用命令之:VI
    HttpClient入门二
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(二维向量)UF_VEC2_is_equal
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(三维向量)UF_VEC3_is_equal
    NX二次开发-NXOPEN C#UF创建块theUfSession.Modl.CreateBlock1
    NX二次开发-NXOpen C# UF函数例子目录【更新日期2020.7.21】
  • 原文地址:https://www.cnblogs.com/1123-wyl/p/15010533.html
Copyright © 2020-2023  润新知