C++ 稀疏数组

2024 年 8 月 29 日 | 阅读 3 分钟

在本文中,我们将讨论 C++ 中的稀疏数组及其示例。

稀疏数组表示一种数据数组,其中许多元素包含零值。因此,在完整数组中,大多数组件具有非零值或充满数字。在计算机数据处理中,稀疏数组可能与密集数组的处理方式不同。

稀疏数组属性

  • 稀疏数组的大部分条目具有相同的值(标准值为零/空)。
  • 稀疏矩阵是其中大多数元素为零的数组。
  • 稀疏数组是没有从零开始的连续索引的数组。
  • 当非零元素较少时,可以使用稀疏数组而不是普通数组。稀疏数组使用更少的空间来存储每个组件,并且可以节省计算时间。

示例

[[1 0 1],

[0 2 0],

[0 3 0]]

为什么稀疏数组优于简单数组来存储元素

存储:当零元素占多数且非零元素最少时,我们选择稀疏数组而不是简单数组,因为它使用更少的内存来存储所有元素。除了零元素之外的其他元素都存储在稀疏数组中。

计算时间:由于我们只在稀疏数组中保留非零组件,因此遍历非零组件所需的计算时间更少。

稀疏数组表示

稀疏数组有两种表示方式

  1. 链表表示
  2. 数组表示

1. 数组表示

稀疏数组由一个具有三行(行、列和值)的二维数组表示。

行:包含非零元素的行的起始位置。

列:表示包含非零元素的列的索引的数字。

值:在(行,列)索引中找到的非零值。

2. 链表表示

稀疏数组中的每个节点由四个字段表示:行、列、值下一个节点

行:它是包含非零元素的行的起始位置。

列:包含非零元素的列的索引值。

值:在(行,列)索引中找到的非零值。

下一个节点:它保存下一个节点的地址。

算法

文件名:SparseArray.cpp

输出

The given matrix is:
1 0 9 
3 0 0 
1 0 0 
The total number of zeros in the given array are 5
The given array is a sparse array.