数据结构(一)--稀疏数组
数据结构复习笔记(一)–稀疏数组
介绍
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。
如:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 10 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 1 5 0 0 0 6 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
转化存储后:
11 11 7
1 2 1
2 3 2
3 5 10
5 0 1
5 2 1
5 3 5
5 7 6
实现代码
public static void main(String[] args) {
int[][] Arr = new int[6][5];
Arr[0][3] = 2;
Arr[1][4] = 7;
Arr[2][4] = 4;
Arr[4][1] = 4;
//原始数组先并统计有效数据个数
int sum = 0;
System.out.println("原始数组:");
for(int i =0;i<Arr.length;i++){
for(int j=0;j<Arr[0].length;j++){
System.out.print(Arr[i][j]+"\t");
if(Arr[i][j]!=0) sum++;
}
System.out.println();
}
System.out.println("有效数据个数:"+sum);
//稀疏矩阵初始化(最前面一行保存行,列,有效数据个数)
int[][] spareArr = new int[sum+1][3];
spareArr[0][0] = Arr.length;
spareArr[0][1] = Arr[0].length;
spareArr[0][2] = sum;
//生成稀疏矩阵
int index = 1;
for(int i =0;i<Arr.length;i++){
for(int j=0;j<Arr[0].length;j++) {
if (Arr[i][j] != 0) {
spareArr[index][0] = i;
spareArr[index][1] = j;
spareArr[index][2] = Arr[i][j];
index++;
}
}
}
//打印稀疏矩阵
System.out.println("稀疏矩阵转化存储后:");
for(int i =0;i<spareArr.length;i++) {
for (int j = 0; j < spareArr[0].length; j++)
System.out.print(spareArr[i][j] + "\t");
System.out.println();
}
}
结果
原始数组:
0 0 0 2 0
0 0 0 0 7
0 0 0 0 4
0 0 0 0 0
0 4 0 0 0
0 0 0 0 0
有效数据个数:4
稀疏矩阵转化存储后:
6 5 4
0 3 2
1 4 7
2 4 4
4 1 4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)