package suanfa1;
import java.io.*;
/*稀疏数组*/
public class ArrayList {
public static void main(String[] args) {
int arr1[][]=new int[11][11];
arr1[1][2]=5;
arr1[2][3]=7;
arr1[5][5]=25;
/*
for (int[] a:arr1) {
for (int b:a) {
System.out.print(b+"\t");
} System.out.println();
}
*/
int sum=0;
//计算出二维数组不为零的个数
for (int[] a:arr1) {
for (int b:a) {
if (b!=0){
sum++;
}
}
}
//设置稀疏数组的第一行的值即数组大小和不为零个数 (sum+1)为行数
int sparseArray[][]=new int[sum+1][3];
sparseArray[0][0]=11;
sparseArray[0][1]=11;
sparseArray[0][2]=sum;
/* for (int a[]:sparseArray){
for (int b:a){
System.out.print(b+"\t");
}
System.out.println();
}*/
//设置稀疏数组每行记录的值
int count=0;
for (int i=0;i<arr1.length;i++){
for (int j=0;j<arr1.length;j++){
if (arr1[i][j]!=0){
count++;
sparseArray[count][0]=i;//稀疏数组1行0列设置为 非零数的行数
sparseArray[count][1]=j;//列数
sparseArray[count][2]=arr1[i][j];//值
}
}
}
//foreach循环输出稀疏数组的列表
for (int a[]:sparseArray){
for (int b:a){
System.out.print(b+"\t");
}
System.out.println();
}
//恢复原来的数组 长度为稀疏数组的第一行
int r[][]=new int[sparseArray[0][0]][sparseArray[0][1]];
//为数组恢复原来的值第1行0列是行数,1行1列是列数,1行2列是值
for (int i=1;i<=sum;i++){
r[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
for (int a[]:r){
for (int b:a
) {
System.out.print(b+"\t");
}
System.out.println();
}
}
}
稀疏数组的简单代码实现
猜你喜欢
转载自blog.csdn.net/qq_41556688/article/details/112491672
今日推荐
周排行