首页 > 编程语言 >数据结构与算法--002-稀疏数组

数据结构与算法--002-稀疏数组

时间:2022-10-28 12:32:05浏览次数:53  
标签:sparseArray -- 稀疏 System 002 int 数组 array 数据结构


稀疏数组

当一个数组中的很多值默认是0,因此记录了很多没有意义的数据,因而需要稀疏数组

基本介绍:

当一个数组中大部分是由零,或者为同一个值的数组时,可以使用稀疏数组.

稀疏数组处理方法:

  • 记录数组中一共有几行几列,有多少个不同的值
  • 把具有不同的元素的行列以及值记录在一个小规模中,从而缩小程序的规模
  • 数据结构与算法--002-稀疏数组_二维数组

二维数组转化稀疏数组的思路

  1. 遍历原始数组的二维数组,得到有效数据的个数sum
  2. 根据sum就可以创建sparseArrayint[sum+1][3]
    [sum+1]:表示行数,第一行用来存放原始数组的行列数,和一共有多少个值
  1. 列数
  1. 将二维数组的有效数据存入到稀疏数组

稀疏数组转化为原始数组的思路

  1. 先读取稀疏数组的第一行,根据第一行的存放原始数组的行列数,创建二维数组
  2. 在读取稀疏数组后几行的数据,赋值给二维数组
package day1.work;

public class SparseArray {
public static void main(String[] args) {
int allNum = 10;//总行数和总列数
int[][] array = new int[allNum][allNum];
//创建一个原始数组
array[1][1] = 2;
array[2][3] = 3;
array[5][5] = 1;
System.out.println("原始的二维数组:");
for (int[] a : array) {
for (int data : a) {
System.out.print(data + "\t");
}
System.out.println();
}

//二维数组转换到稀疏数组
//遍历非零的个数
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] != 0) {
sum++;
}
}
}
//创建稀疏数组
int[][] sparseArray = new int[sum + 1][3];
sparseArray[0][0] = allNum;//行
sparseArray[0][1] = allNum;//列
sparseArray[0][2] = sum;//数的数量

//遍历二维数组给稀疏数组赋值
int countNum = 0;//记录一共及格数字
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] != 0) {
countNum++;
sparseArray[countNum][0] = i;
sparseArray[countNum][1] = j;
sparseArray[countNum][2] = array[i][j];

}
}
}
//输出稀疏数组
System.out.println("稀疏数组为");
System.out.println("行\t列\t值");
for (int[] a : sparseArray) {
for (int data : a) {
System.out.print(data + "\t");
}
System.out.println();
}

//将稀疏数组转换称为正常数组
int[][] array2 = new int[sparseArray[0][0]][sparseArray[0][0]];
for (int i = 1; i < sparseArray.length; i++) {
/*
行 列 值
10 10 3
1 1 2
2 3 3
5 5 1
*/
// 行 列 值
array2[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
}
System.out.println("转换后的正常组");
for (int[] a : array2) {
for (int data : a) {
System.out.print(data + "\t");
}
System.out.println();
}
}
}

输出:

数据结构与算法--002-稀疏数组_数组_02


标签:sparseArray,--,稀疏,System,002,int,数组,array,数据结构
From: https://blog.51cto.com/u_15850876/5804359

相关文章

  • 操作系统-1.1_1概念功能和目标
    操作系统的概念功能和目标熟悉的操作系统:windows,安卓,ios,linux概念应用程序:QQ,浏览器等操作系统:负责关系协调硬件,软件等计算机资源的工作为上层的应用程序,用户提供简......
  • CSS盒子 模型(box-model)
    盒子模型(box-model)CSS处理网页时,它认为每个标签都包含在一个不可见的盒子里。如果把所有的标签都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。我们只需要将相......
  • javaSE13-- API_常用类--默认继承Object--toString()--==与equals()[详解]
    API_常用类API应用程序编程接口API文档是对Java预定定义的类或接口功能和方法功能的说明文档,目的是提供给开发人员进行使用帮助说明默认继承Object,Java中所有类没有显示的......
  • 907. 子数组的最小值之和
    907.子数组的最小值之和给定一个整数数组arr,找到min(b) 的总和,其中b的范围为arr的每个(连续)子数组。由于答案可能很大,因此返回答案模10^9+7。示例一输......
  • Linux使用ifconfig命令没有显示ens33或者没有ip地址
    1.首先win+R输入services.msc进入服务窗口,看一下服务有没有启动2.修改网络配置文件ONBOOT修改为yesvi/etc/sysconfig/network-scripts/ifcfg-ens33---进入配置文件3......
  • Dapr实现.Net Grpc服务之间的发布和订阅,并采用WebApi类似的事件订阅方式
    大家好,我是失业在家,正在找工作的博主Jerry,找工作之余,总结和整理以前的项目经验,动手写了个洋葱架构(整洁架构)示例解决方案OnionArch。其目的是为了更好的实现基于DDD(领域驱......
  • uniapp打包h5
    1.找到项目中 manifest.json---H5 配置---运行时的基础路径, 将路径修改为相对路径(./) 注意:1.运行的基础路径系统默认打包路径为绝对路径,如不改,打包时找不到......
  • 【随手记录】 关于nginx请求500错误 - CreateFile() "/temp/client_body_temp/0000000
    这几天一位前端同事在处理上传请求时候nginx返回500错误,没有额外错误信息,后端也没有接收到请求,看他本地nginx日志错误:[crit]28700#21636:*1389CreateFile()"\nginx-......
  • Django 删除models 中的表
    在models中创建了表,但是又要大改,本想着直接在mysql中删除表后再次makemigrations但发现这样子操作后,进行objects.create操作,发现报错,部分字段不在表中, ......
  • 第6章上 梯度下降法
     6-1什么是梯度下降法                       ......