数据结构与算法Java实现-01稀疏数组

    科技2026-03-04  6

    Java稀疏数组

    package aStudy.day1; /** * @author haoqi * @Date 2020/9/30 - 16:29 * * day01: 二维数组转换稀疏数组 */ public class data01 { public static void main(String[] args) { //1.创建一个二维数组 //随机赋值几个数据 int[][] arr = new int[10][10]; arr[2][2] = 2; arr[3][3] = 3; arr[4][4] = 4; //2.输出二维数组 System.out.println("原始二维数组:"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { System.out.printf("%d\t",arr[i][j]); } System.out.println(); } //3.获取原始数组中有效数据个数: int sum = 0; for (int i = 0; i < arr.length; i++) for (int j = 0; j < arr.length; j++) if (arr[i][j] != 0) sum++; //记录有效元素数据 System.out.println("获取原始数组中有效数据个数:"+sum); //4.创建稀疏数组 int[][] arrMini = new int[sum+1][3]; arrMini[0][0] = 10; arrMini[0][1] = 10; arrMini[0][2] = sum; //5.赋值个稀疏数组 System.out.println("赋值个稀疏数组:"); int count=0; //记录数据 for (int i = 0; i < arr.length; i++) for (int j = 0; j < arr.length; j++) if (arr[i][j] != 0){ count++; arrMini[count][0] = i; arrMini[count][1] = j; arrMini[count][2] = arr[i][j]; } //6.输出稀疏数组 System.out.println("稀疏数组:"); for (int i = 0; i < arrMini.length; i++) { System.out.printf("%d\t%d\t%d\t", arrMini[i][0], arrMini[i][1], arrMini[i][2]); System.out.println(); } //7.还原原始二维数组 //稀疏数组的第一行数据是还原的基本框架 int x,y; //x行,y列 x = arrMini[0][0]; y = arrMini[0][1]; int[][] reArr = new int[x][y]; //将稀疏数组中的键值对配对给要还原的数组 //注意: 由于稀疏数组第一行数据是框架,要吃i = 1;开始转换 for (int i = 1; i < arrMini.length; i++) reArr[arrMini[i][0]][arrMini[i][1]] = arrMini[i][2]; System.out.println("恢复后的二维数组"); for (int[] row : reArr) { for (int data : row) { System.out.printf("%d\t",data); } System.out.println(); } } }

    Processed: 0.014, SQL: 9