我是阿尘。一个不想被生活放弃的野鬼。 最近在小破站找了韩顺平老师的视频,准备跟着复习一下数据结构和算法,常说好记性不如烂笔头,学过之后还是写点笔记的好。 稀疏数组(sparse array) 是一种只为数组中的 非零元素分配内存的特殊类型数组,内存中存储了稀疏数组中非零元素的下标和值。 稀疏数组实际上就是对普通二维数组的压缩形式,当一个数组中大部分元素为0或者为同一个值时,可以使用稀疏数组来保存该数组。 稀疏数组是一个N行3列的二维数组: 这个数组的打印出来的样式 转换后的稀疏数组 二维数组转稀疏数组的思路: 稀疏数组转二维数组的思路: 读取稀疏数组第一行,根据第一行的数据创建二维数组generalArr2[sparseArr[0][0]] [sparseArr[0][1]] 读取稀疏数组后几行的数据赋给二维数组 读取稀疏数组第一行,根据第一行的数据创建二维数组generalArr2[sparseArr[0][0]] [sparseArr[0][1]] 读取稀疏数组后几行的数据赋给二维数组
数据结构与算法学习笔记之稀疏数组
关于稀疏数组
举个栗子!
// 创建一个二维数组 int generalArr1[][] = new int[8][8]; generalArr1[1][2] = 1; generalArr1[2][3] = 2; generalArr1[2][2] = 1;
// 遍历二维数组并输出 for (int[] rows : generalArr1) { for (int data : rows) { System.out.printf("%dt", data); } System.out.println(); }
// 二维数组转稀疏数组 // 1.遍历二维数组,得到有效数据的个数 int sum = 0;// 初始化有效数据的个数 for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (generalArr1[i][j] != 0) { sum++; } } } // 2.创建稀疏数组 int sparseArr[][] = new int[sum + 1][3]; sparseArr[0][0] = 8; sparseArr[0][1] = 8; sparseArr[0][2] = sum; // 3.遍历二维数组,将非零数据存入sparseArr中 int count = 0; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (generalArr1[i][j] != 0) { count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = generalArr1[i][j]; } } }
// 3.输出稀疏数组 for (int i = 0; i < sparseArr.length; i++) { System.out.printf("%dt%dt%dtn", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]); }
// 稀疏数组转二维数组 // 1.创建一个二维数组 int generalArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]]; // 2.读取稀疏数组的数据并赋给二维数组 for (int i = 1; i < sparseArr.length; i++) { generalArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; }
总结一下
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算