java稀疏数组

java稀疏数组

因为有些二维数组大部分元素都是为0,因此记录了很多没有意义的数据。因此引入稀疏数组(一种数据结构)

处理方式:记录一共有几行几列,有多少个不同的值。

package charpter4;
public class Demo {
public static void main(String[] args) {
//0:没有棋子,1黑棋,2白棋
int[][] array1= new int[11][12];
array1[1][2]=1;
array1[2][3]=2;
//输出最原始的数组
System.out.println("输出最原始的数组:");
for(int[] ints:array1){
for(int anInt:ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
//转换为稀疏数组
//获取有效值个数
int sum = 0;
for (int[] value : array1) {
for (int j = 0; j < array1[0].length; j++) {
if (value[j] != 0)
sum++;
}
}
//创建一个稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0]=array1.length;
array2[0][1]=array1[0].length;
array2[0][2]=sum;
//将非0元素的值放入稀疏数组
int count=0;
for(int i=0;i<array1.length;i++)
for(int j=0;j<array1[0].length;j++){
if(array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
System.out.println("稀疏数组:");
for(int[] ints:array2){
for(int anInt:ints){
System.out.print(anInt+" ");
}
System.out.println();
}
//稀疏数组还原
int[][] array3=new int[array2[0][0]][array2[0][1]];
int cnt=1;
while(cnt<=array2[0][2]){
array3[array2[cnt][0]][array2[cnt][1]]=array2[cnt][2];
cnt++;
}
System.out.println("稀疏数组还原:");
for(int[] ints:array3){
for(int anInt:ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
posted @   林每天都要努力  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示