稀疏数组的创建和还原

package com.kuang.array;

public class ArrayDemo04 {
public static void main(String[] args) {
int[][] nums = new int[11][11];/*創建一個11*11的二維數組*/
nums[1][2] = 1;
nums[2][3] = 2;
System.out.println("输出原来的数组");
/*遍历11*11的二维数组*/
for (int[] arr01 : nums) {
for (int arr02 : arr01) {
System.out.print(arr02 + "\t");
}
System.out.println();
}
/*获取稀疏数组的有效值的个数*/
int count = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
if (nums[i][j] != 0) {
count++;
}
}
}
System.out.println("有效值的个数为:" + count);

/*创建稀疏数组*/
int[][] nums2 = new int[count + 1][3];

/*创建稀疏数组的头部*/
nums2[0][0] = 11;
nums2[0][1] = 11;
nums2[0][2] = count;

/*将二维数组的有效值赋予稀疏数组*/
int count2 = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
if (nums[i][j] != 0) {
count2++;
nums2[count2][0] = i;
nums2[count2][1] = j;
nums2[count2][2] = nums[i][j];
}

}
}

/*打印稀疏数组*/
for (int i = 0; i < nums2.length; i++) {
System.out.println(nums2[i][0] + "\t" + nums2[i][1] + "\t" + nums2[i][2] + "\t");
}
System.out.println("还原稀疏数组:");
/*还原稀疏数组*/
int[][] nums3 = new int[nums2[0][0]][nums2[0][1]];
for (int i = 1; i < nums2.length; i++) {
nums3[nums2[i][0]][nums2[i][1]] = nums2[i][2];
}
for (int i=0;i<nums3.length ;i++ ) {
for (int j=0;j<nums3[i].length ;j++ ) {
System.out.print(nums3[i][j]+"\t");
}
System.out.println();
}

}
}
posted @ 2021-12-28 20:36  等风来ysh  阅读(34)  评论(0)    收藏  举报