Java:稀疏数组
2021-06-05 12:04
标签:demo1 image 演示 i++ 多少 遍历 获取 style main 1、 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存数组。 2、 稀疏数组的处理方式是: a) 记录数组一共有几行几列,有多少个不同值 b) 把具有不同值元素的行、列及值记录在一个小规模的数组中,从而缩小程序的规模 3、 如下图 代码演示1: 运行结果: 输出原始的数组 0 0 0 0 0 0 0 0 1 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 ============ 有效值的个数:2 输出稀疏数组 6 6 2 1 2 1 2 1 2 ========== 输出还原的数组 0 0 0 0 0 0 0 0 1 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 代码演示2: 输出原始的数组 1 2 3 5 6 2 4 6 8 ============ 有效值的个数:9 输出稀疏数组 3 4 9 0 0 1 0 1 2 0 2 3 1 0 5 1 1 6 2 0 2 2 1 4 2 2 6 2 3 8 ========== 输出还原的数组 1 2 3 0 5 6 0 0 2 4 6 8 Java:稀疏数组 标签:demo1 image 演示 i++ 多少 遍历 获取 style main 原文地址:https://www.cnblogs.com/Jiemyx/p/14624549.html 1 package com.jiemyx.array;
2
3 public class ArrayDemo10 {
4 public static void main(String[] args) {
5 //1、创建一个原始的二维数组6*6 0代表没有棋子,1代表白棋,2代表黑棋
6 int[][] array1 = new int[6][6];
7 array1[1][2] = 1;
8 array1[2][1] = 2;
9
10 //输出原始的数组
11 System.out.println("输出原始的数组");
12 for (int[] ints : array1) {
13 for (int anInt : ints) {
14 System.out.print(anInt+"\t");
15 }
16 System.out.println();
17 }
18
19 System.out.println("============");
20
21 //2、转换为稀疏数组
22 //获取有效值的个数
23 int sum = 0;
24 for (int i = 0; i ) {
25 for (int j = 0; j ) {
26 if (array1[i][j] != 0){
27 sum++;
28 }
29 }
30 }
31 System.out.println("有效值的个数:"+sum);
32
33 //创建一个稀疏数组
34 int[][] array2 = new int[sum+1][3];
35 array2[0][0] = 6;
36 array2[0][1] = 6;
37 array2[0][2] = sum;
38
39 //遍历原始的数组,将非0的值存放稀疏数组中
40 int count = 0;
41 for (int i = 0; i ) {
42 for (int j = 0; j ) {
43 if (array1[i][j] != 0){
44 count++;
45 array2[count][0] = i;
46 array2[count][1] = j;
47 array2[count][2] = array1[i][j];
48 }
49 }
50 }
51
52 //输出稀疏数组
53 System.out.println("输出稀疏数组");
54
55 for (int i = 0; i ) {
56 System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]);
57 }
58
59 System.out.println("==========");
60
61 //3、还原数组
62 //读取稀疏数组
63 int[][] array3 = new int[array2[0][0]][array2[0][1]];
64
65 //给其中的元素还原它的值
66 for (int i = 1; i ) {
67 array3[array2[i][0]][array2[i][1]] = array2[i][2];
68 }
69
70 //打印还原数组
71 System.out.println("输出还原的数组");
72 for (int[] ints : array3) {
73 for (int anInt : ints) {
74 System.out.print(anInt+"\t");
75 }
76 System.out.println();
77 }
78 }
79 }
1 package com.jiemyx.array;
2
3 public class ArrayDemo11 {
4 public static void main(String[] args) {
5 //1、创建一个原始的二维数组6*6 0代表没有棋子,1代表白棋,2代表黑棋
6 int[][] array1 = {{1,2,3},{5,6},{2,4,6,8}};
7 /*array1[4][2] = 1;
8 array1[5][1] = 2;
9 array1[6][3] = 3;*/
10
11 //输出原始的数组
12 System.out.println("输出原始的数组");
13 for (int[] ints : array1) {
14 for (int anInt : ints) {
15 System.out.print(anInt+"\t");
16 }
17 System.out.println();
18 }
19
20 System.out.println("============");
21
22 //2、转换为稀疏数组
23 //获取有效值的个数
24 int sum = 0;
25 for (int i = 0; i ) {
26 for (int j = 0; j ) {
27 if (array1[i][j] != 0){
28 sum++;
29 }
30 }
31 }
32 System.out.println("有效值的个数:"+sum);
33
34 //创建一个稀疏数组
35 int[][] array2 = new int[sum+1][3];
36 array2[0][0] = array1.length;
37
38 //找到二维元素下有最多元素的一维数组
39 int a = array1[0].length;
40 for (int i = 1; i ) {
41 if (a array1[i].length){
42 a = array1[i].length;
43 }
44 array2[0][1] = a;
45 }
46 array2[0][2] = sum;
47
48 //遍历原始的数组,将非0的值存放稀疏数组中
49 int count = 0;
50 for (int i = 0; i ) {
51 for (int j = 0; j ) {
52 if (array1[i][j] != 0){
53 count++;
54 array2[count][0] = i;
55 array2[count][1] = j;
56 array2[count][2] = array1[i][j];
57 }
58 }
59 }
60
61 //输出稀疏数组
62 System.out.println("输出稀疏数组");
63
64 for (int i = 0; i ) {
65 System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]);
66 }
67
68 System.out.println("==========");
69
70 //3、还原数组
71 //读取稀疏数组
72 int[][] array3 = new int[array2[0][0]][array2[0][1]];
73
74 //给其中的元素还原它的值
75 for (int i = 1; i ) {
76 array3[array2[i][0]][array2[i][1]] = array2[i][2];
77 }
78
79 //打印还原数组
80 System.out.println("输出还原的数组");
81 for (int[] ints : array3) {
82 for (int anInt : ints) {
83 System.out.print(anInt+"\t");
84 }
85 System.out.println();
86 }
87 }
88 }
上一篇:利用反射编写泛型数组代码
下一篇:Spring Data JPA