Java二维数组转成稀疏sparsearray数组
稀疏数组
基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。
代码
package com.lin.SparseArray_0131;
import java.util.Iterator;
/**
* 稀疏数组基本介绍
* 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
* 稀疏数组的处理方法是:
* 记录数组一共有几行几列,有多少个不同的值
* 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
* @Description:
* @author LinZM
* @date 2021-1-31 11:56:02
* @version V1.8
*/
public class SparseArray {
public static void main(String[] args) {
System.out.println("********************二维数组**************************");
// 6行7列数组
int[][] Arr = new int[6][7];
Arr[0][3] = 22;
Arr[0][6] = 15;
Arr[1][1] = 11;
Arr[1][5] = 17;
Arr[2][3] = -6;
Arr[3][5] = 39;
Arr[4][0] = 91;
Arr[5][2] = 28;
for (int[] col : Arr) {
for(int data : col) {
System.out.print(data + "\t");
}
System.out.println();
}
System.out.println("********************转成稀疏数组***************************************");
int count = 0;
for (int[] col : Arr) {
for(int data : col) {
if(data != 0) {
count ++;
}
}
}
System.out.println("count = " + count);
int sparseArr[][] = new int[count + 1][3];
sparseArr[0][0] = Arr.length;
sparseArr[0][1] = Arr[0].length;
sparseArr[0][2] = count;
int row = 1;
for (int i = 0; i < Arr.length; i++) {
for (int j = 0; j < Arr[i].length; j++) {
if(Arr[i][j] != 0) {
sparseArr[row][0] = i;
sparseArr[row][1] = j;
sparseArr[row][2] = Arr[i][j];
row ++;
}
}
}
System.out.println("************************稀疏数组******************************");
for (int[] col : sparseArr) {
for(int data : col) {
System.out.print(data + "\t");
}
System.out.println();
}
}
}
仅供参考,有错误还请指出!
有什么想法,评论区留言,互相指教指教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端