直接看下面的程序代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
package
chapter02;
import
java.util.Arrays;
/*
* 稀疏矩阵压缩(简单版)
*/
public
class
CH02_05 {
public
static
void
main(String[] args) {
//定义一个稀疏矩阵
int
[][] arr =
{
{
25
,
0
,
0
,
32
,
0
, -
25
},
{
0
,
33
,
77
,
0
,
0
,
0
},
{
0
,
0
,
0
,
55
,
0
,
0
},
{
0
,
0
,
0
,
0
,
0
,
0
},
{
101
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
38
,
0
,
0
,
0
}
};
//输出稀疏矩阵
for
(
int
i =
0
; i < arr.length; i++){
System.out.println(Arrays.toString(arr[i]));
}
//压缩稀疏矩阵的准备工作
int
rows = arr.length;
//稀疏矩阵的行
int
cols = arr[
0
].length;
//稀疏矩阵的列
int
real =
0
;
//稀疏矩阵非0元素
//遍历获取稀疏矩阵的非0元素个数
for
(
int
i =
0
; i < rows; i++){
for
(
int
j =
0
; j < cols; j++){
if
(arr[i][j] !=
0
){
real +=
1
;
}
}
}
//定义一个数组,用来保存压缩后的稀疏矩阵
int
[][] arrResult =
new
int
[real+
1
][
3
];
//初始化arrResult
for
(
int
i =
0
; i < arrResult.length; i++){
Arrays.fill(arrResult[i],
0
);
}
//在arrResult中保存稀疏矩阵的基本信息
//arrResult[0][0]:稀疏矩阵的行数 arrResult[0][1]:稀疏矩阵的列数 arrResult[0][2]:稀疏矩阵非0元素个数
arrResult[
0
][
0
] = rows;
arrResult[
0
][
1
] = cols;
arrResult[
0
][
2
] = real;
//输出初始化后的arrResult
System.out.println();
for
(
int
i =
0
; i < arrResult.length; i++){
System.out.println(Arrays.toString(arrResult[i]));
}
//开始压缩稀疏矩阵
int
k =
1
;
//用来记录arrResult到第几行,因为第0行已经用来保存基本信息,所以从第1行开始
for
(
int
i =
0
; i < rows; i++){
for
(
int
j =
0
; j < cols; j++){
if
(arr[i][j] !=
0
){
arrResult[k][
0
] = i;
arrResult[k][
1
] = j;
arrResult[k][
2
] = arr[i][j];
k++;
}
}
}
//输出压缩后的稀疏矩阵
System.out.println();
for
(
int
i =
0
; i < arrResult.length; i++){
System.out.println(Arrays.toString(arrResult[i]));
}
}
}
|
执行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[25, 0, 0, 32, 0, -25]
[0, 33, 77, 0, 0, 0]
[0, 0, 0, 55, 0, 0]
[0, 0, 0, 0, 0, 0]
[101, 0, 0, 0, 0, 0]
[0, 0, 38, 0, 0, 0]
[6, 6, 8]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[6, 6, 8]
[0, 0, 25]
[0, 3, 32]
[0, 5, -25]
[1, 1, 33]
[1, 2, 77]
[2, 3, 55]
[4, 0, 101]
[5, 2, 38]
|
本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1976965,如需转载请自行联系原作者