package com.hl.zj;
/**
* @program: 稀疏数组和二维数组的转化
* @description: 将二维数组转化为稀疏数组
* @author: Zhou Jian
* @create: 2020-07-08 11:28
*/
import java.util.ArrayList;
/**
* 有一个5*5的棋盘,只有两个旗子,使用稀疏数组存储
*/
public class TwoArrToSparesArr {
// 主函数
public static void main(String[] args) {
// 1.初始化
// 创建一个5*5的二维数组 --> (1,1) (2,2)
int[][] Arr = new int[5][5];
int num = 0; //存储二维数组中非0元素的个数
// 非0元素
Arr[1][1] = 1;
Arr[2][2] = 2;
// 2. 遍历原始数组
// (1)遍历原始数组
System.out.println("原始二维数组为:");
for (int i = 0; i < Arr.length; i++) {
for (int j = 0; j < Arr[i].length; j++) {
System.out.print(Arr[i][j] + "\t");
}
System.out.print("\n");
}
// (2)找到原始数组中非0元素的个数 --> 为创建稀疏数组的行数做准备(列永远为3)
for (int i = 0; i < Arr.length; i++) {
for (int j = 0; j < Arr[i].length; j++) {
if(Arr[i][j] != 0){
num ++;
}
}
}
System.out.println("原始数组中非0元素个数为:" + num);
// 3. 创建稀疏数组
int[][] ArrayNew = new int[num + 1][3];
// 为稀疏数组赋初值
// 稀疏数组的第0行
ArrayNew[0][0] = Arr.length;
ArrayNew[0][1] = Arr.length;
ArrayNew[0][2] = num;
// 循环遍历原始数组,将非0元素添加到稀疏数组中
int count = 0;// 记录第几个非0元素
for (int i = 0; i < Arr.length; i++) {
for (int j
二维数组和稀疏矩阵的相互转化
最新推荐文章于 2022-05-09 18:02:18 发布