数据结构与算法之稀疏数组
程序员文章站
2022-07-09 15:43:28
...
先把代码放下面吧,以后再补充
package com.pzg.sparsearray;
/**
* @author: pengzuguang
* @date: 2020/10/5 21:26
* @description: 稀疏数组
*/
public class SparseArray {
public static void main(String[] args) {
//初始化一个二维数组
int initialize[][] = new int[9][8];
initialize[2][2] = 1;
initialize[3][2] = 1;
initialize[4][4] = 2;
//格式化输出初始化数组
System.out.println("格式化输出初始化数组:");
for (int[] data : initialize
) {
for (int values: data
) {
System.out.printf("%d\t",values);
}
System.out.println();
}
//初始化数组转成稀疏数组
int sum=0; //标志初始化数组非0个数
for (int[] data : initialize
) {
for (int values: data
) {
if (values>0 || values<0) {
sum++;
}
}
}
int sparseArray[][]=new int[sum+1][3]; //声明一个稀疏数组
//给稀疏数组赋值
sparseArray[0][0]=9;
sparseArray[0][1]=8;
sparseArray[0][2]=sum;
int count=0;
for (int i=0;i<9;i++){
for (int j=0;j<8;j++){
if(initialize[i][j]!=0){
count++;
sparseArray[count][0]=i;
sparseArray[count][1]=j;
sparseArray[count][2]=initialize[i][j];
}
}
}
System.out.println("稀疏数组长度:"+sparseArray.length);
System.out.println("初始化数组转换成稀疏数组:");
for (int[] data : sparseArray
) {
for (int values: data
) {
System.out.printf("%d\t",values);
}
System.out.println();
}
//声明第二个初始化二维数组
int initialize_2[][]=new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i=1;i<=count;i++){
initialize_2[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
System.out.println("稀疏数组转换成第二个初始化的二维数组:");
for (int[] data : initialize_2
) {
for (int values: data
) {
System.out.printf("%d\t",values);
}
System.out.println();
}
}
}
控制台输出结果如下
格式化输出初始化数组:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 2 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
稀疏数组长度:4
初始化数组转换成稀疏数组:
9 8 3
2 2 1
3 2 1
4 4 2
稀疏数组转换成第二个初始化的二维数组:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 2 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