爪哇数据结构-稀疏数组
稀疏数值的基础概念(图示)
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方式是:
记录数组一共有几行几列,有多少个不同值
把具有不同值的元素和行列及值记录在-个小规模的数组中,从而缩小程序的规模
如上图:上边是原始数组,下边是稀疏数组
公共静态void main(String[]参数){ 0
//建立一个原始二维数组
int[][]数组1=new int[11][11];
数组1[1][2]=1;
数组1[2][3]=5;
数组1[3][4]=9;
for(int I=0;IAR射线1。长度-1;I){ 0
for(int j=0;贾雷1号。长度-1;j ){
系统。出去。print(数组1[I][j]' \ t ');
}
系统。出去。println();
}
系统。出去。println('=========================================================' '
'====================================');
//判断有多少个有效数值
int sum=0;
for(int I=0;IAR射线1。长度-1;I){ 0
for(int j=0;贾雷1号。长度-1;j ){
if(array1[i][j]!=0){
总和;
}
}
}
System.out.println('有效数值有总和个');
//建立一个稀疏数组
int[][]数组2=new int[sum 1][3];
数组2[0][0]=11;
数组2[0][1]=11;
数组2[0][2]=sum;
//计数记数
int count=0;
for(int I=0;IAR射线1。长度;I){ 0
for(int j=0;jarray1[i].长度;j ){
if(array1[i][j]!=0){
计数;
//数组2[计数][0]横坐标=i
//数组2[计数][1]纵坐标=j
//数组2[计数][2]值=array1[i][j]
数组2[计数][0]=I;
数组2[计数][1]=j;
数组2[计数][2]=数组1[I][j];
}
}
}
for(int x[
for(int x : x){ 0
系统。出去。打印(IntX ' \ t ');
}
系统。出去。println();
}
系统。出去。println('=========================================================' '
'====================================');
//还原稀疏数组
//建立一个二维数组
int[][]数组3=new int[数组2[0][0]][数组2[0][1]];
for(int I=1;IAR射线2。长度;I){ 0
//array3[array2的横坐标][array2的纵坐标]=array2[i][2]
数组3[数组2[I][0]][数组2[I][1]]=数组2[I][2];
}
for(int x[
for(int x : x){ 0
系统。出去。打印(IntX ' \ t ');
}
系统。出去。println();
}
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116866.html