稀疏矩阵最简单的定义就是,一个矩阵中的大部分的元素为0,即可称为“稀疏矩阵”,例如如下: 代码如下
public class ys {
public static void main(String[] args) throws IOException {
int M,N,num;
String strM,strN,number;
String tempstr;
BufferedReader keyin =
new BufferedReader(
new InputStreamReader(System.
in));
System.
out.println(
"请先输入矩阵A的行M值:");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.
out.println(
"请输入矩阵A的列N值:");
strN=keyin.readLine();
N=Integer.parseInt(strN);
System.
out.println(
"请输入数值,定义稀疏矩阵中不为0的个数:");
number=keyin.readLine();
num=Integer.parseInt(number);
while(num>=M*N/
2)
{
System.
out.println(
"请确保稀疏矩阵中不为0的个数满足稀疏矩阵的定义:");
number=keyin.readLine();
num=Integer.parseInt(number);
}
int i,j,tmpRW,tmpNZ,tmpCL;
int temp =
1;
int Sparse[][]=
new int [M][N];
int Compress[][]=
new int[num+
1][
3];
for(i=
0;i<M;i++)
{
for(j=
0;j<N;j++)
{
Sparse[i][j]=
0;
}
}
tmpNZ=num;
for(i=
1;i<tmpNZ+
1;i++)
{
tmpRW=(
int)(Math.random()*
100);
tmpRW=(tmpRW%M);
tmpCL=(
int)(Math.random()*
100);
tmpCL=(tmpCL%N);
if(Sparse[tmpRW][tmpCL]!=
0)
tmpNZ++;
Sparse[tmpRW][tmpCL]=i;
}
for(i=
0;i<M;i++)
{
for(j=
0;j<N;j++)
{
System.
out.print(Sparse[i][j]+
" ");
}
System.
out.println();
}
Compress[
0][
0]=M;
Compress[
0][
1]=N;
Compress[
0][
2]=num;
for(i=
0;i<M;i++)
{
for(j=
0;j<N;j++)
if(Sparse[i][j]!=
0)
{
Compress[temp][
0]=i;
Compress[temp][
1]=j;
Compress[temp][
2]=Sparse[i][j];
temp++;
}
}
System.
out.println(
"[矩阵压缩后内容为]\n");
for(i=
0;i<num+
1;i++)
{
for(j=
0;j<
3;j++)
{
System.
out.print(Compress[i][j]+
" ");
System.
out.print(
'\t');
}
System.
out.println();
}
}
}