我的Java数据结构学习-2---稀疏数组

数据结构:线性结构   非线性结构。

线性结构:顺序存储结构    /        链式存储结构

 

 

 

 

第一个案例:稀疏数组

 

 

 

 

 

 

 

 

 

 稀疏数组案例:

 

稀疏数组:思路:

 

 代码实现:

 

 

复制代码
  1 package Demo1.SparseArray;
  2 
  3 public class SparseArr {
  4     public static void main(String[] args) {
  5 
  6         SparseArr sparseArr = new SparseArr();
  7 
  8         //(0,表示没有棋子,1表示黑子,2表示白子)
  9         //1.创建原始的二位数组(棋盘)
 10         int[][] chessAray1 = new int[11][11];
 11         chessAray1[1][2]=1;
 12         chessAray1[2][3]=2;
 13         chessAray1[2][2]=2;
 14         chessAray1[5][3]=1;
 15         //查看原始数组
 16         System.out.println("原始二维数组:");
 17         sparseArr.PrintfForByArray(chessAray1);
 18         //转换稀疏数组:
 19         System.out.println("优化二维数组:----》稀疏数组:");
 20         int[][] sparse = sparseArr.Sparce(chessAray1);
 21         sparseArr.PrintfForByArray(sparse);
 22 
 23         //稀疏数组转换回原始二维数组
 24         System.out.println("稀疏数组----->原始数组:");
 25         int[][] chessArray = sparseArr.chessArray(sparse);
 26         sparseArr.PrintfForByArray(chessArray);
 27 
 28 
 29 
 30     }
 31     //封装将二维数组转换为稀疏数组方法:稀疏数组 int【sum+1】【3】
 32     public int[][] Sparce(int[][] array){
 33 
 34         //1.遍历二维数组,得到非零数据的个数
 35         int sum =0;
 36         for (int i = 0; i < array.length; i++) {
 37 
 38             for (int j = 0; j < array[0].length; j++) {
 39                 if (array[i][j]!=0){
 40                     sum++;
 41                 }
 42             }
 43         }
 44         //2.创建对应的稀疏数组
 45         int[][] SparseArray =  new  int[sum+1][3];
 46         //给稀疏数组复制
 47         SparseArray[0][0]=array.length;//存二维数组的行值
 48         SparseArray[0][1]=array[0].length;//存二维数组的列值
 49         SparseArray[0][2]=sum;
 50 
 51         //遍历二维数组,将非零的值存放到稀疏数组中
 52         //定一个计数,给新的数组顺序。
 53         int count =0;
 54 
 55         for (int i = 0; i < array.length; i++) {
 56             for (int j = 0; j < array[0].length; j++) {
 57                 if (array[i][j]!=0){
 58                     count++;
 59                     SparseArray[count][0]=i;
 60                     SparseArray[count][1]=j;
 61                     SparseArray[count][2]=array[i][j];
 62                 }
 63             }
 64         }
 65         //查看稀疏数组
 66        // System.out.println("稀疏数组:");
 67       // PrintfForByArray(SparseArray);
 68 
 69 
 70         return SparseArray;
 71     }
 72 
 73     //封装循环遍历二维数组打印方法:
 74     public void PrintfForByArray(int[][] SparseArray){
 75         for (int[] item : SparseArray) {
 76             for (int data : item) {
 77                 System.out.printf("%d\t",data);
 78             }
 79             System.out.println();
 80         }
 81     }
 82     //封装将稀疏数组恢复为原始数组方法:
 83     public int[][] chessArray(int[][] SparseArray){
 84         //还原稀疏数组保存的原始数组的行列
 85         int row = SparseArray[0][0];
 86         int low = SparseArray[0][1];
 87         //建立原始数组
 88         int[][]  chessArray = new int[row][low];
 89         //恢复原二维数组的值,有效数组是第二行开始
 90         for (int i = 1; i < SparseArray.length; i++) {
 91             //获取稀疏数组的行与列
 92             int rowTemp = SparseArray[i][0];
 93             int lowTemp = SparseArray[i][1];
 94             int result = SparseArray[i][2];
 95             chessArray[rowTemp][lowTemp]=result;
 96         }
 97         return chessArray;
 98     }
 99 
100 
101 
102 
103 }
复制代码

 

posted on   白嫖老郭  阅读(90)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示