package 稀疏数组和队列;
public class 稀疏数组 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个原始二维数组
int [][]array = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
//输出原始数组
System.out.println("原始二维数组:");
for(int[] row : array) {
for(int data : row) {
System.out.print(data+"\t");
}
System.out.println();
}
//将二维数组转换为稀疏数组的思想
// 1.获取非零数据个数
int sum = 0;
for(int i = 0; i < array.length; i ++ ) {
for(int j = 0;j < array[0].length; j ++) {
if(array[i][j]!=0)
sum++;
}
}
System.out.println("sum="+sum);
// 创建对应的稀疏数组
int sparseArray[][] = new int[sum+1][3];
sparseArray[0][0] = array.length;
sparseArray[0][1] = array[0].length;
sparseArray[0][2] = sum;
// 遍历二维数组将非零值存放进稀疏数组
for(int i = 0; i < array.length; i ++ ) {
for(int j = 0;j < array[0].length; j ++) {
if(array[i][j]!=0)
{
sparseArray[sum][0] = i;
sparseArray[sum][1] = j;
sparseArray[sum--][2] = array[i][j];
}
}
}
// 输出稀疏数组
System.out.println("输出稀疏数组:");
for(int[] arr : sparseArray) {
for(int data : arr) {
System.out.print(data+" ");
}
System.out.println();
}
// 恢复数组
int [][]arrayP = new int[sparseArray[0][0]][sparseArray[0][1]];
for(int i = 1;i<sparseArray.length;i++) {
arrayP[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
}
System.out.println("恢复二维数组:");
for(int[] row : arrayP) {
for(int data : row) {
System.out.print(data+"\t");
}
System.out.println();
}
}
}
数据结构学习-二维数组与稀疏数组转换
最新推荐文章于 2024-07-26 12:28:02 发布