1.介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
  
稀疏数组的处理方法是:

1.记录数组一共有几行几列,有多少个不同的值
  
2.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

2.分析

3.代码实现

    public class SparseArray
{
public static void Test()
{
int[][] chessArr = new int[][]; //
int sum = ; Console.WriteLine("\n初始化棋盘");
//初始化棋盘
for (int i = ; i < chessArr.Length; i++)
{
chessArr[i] = new int[]; for (int j = ; j < chessArr[i].Length; j++)
{ if (i == && j == )
{
chessArr[i][j] = ; sum++;
} if (i == && j == )
{
chessArr[i][j] = ; sum++;
} Console.Write(chessArr[i][j] + "\t");
} Console.WriteLine();
} Console.WriteLine("\n初始化非零的个数:"+sum); //创建对应的稀疏数组
int[][] sparseArr =new int[][]; for (int i = ; i < sparseArr.Length; i++)
{
sparseArr[i] = new int[];
} sparseArr[][] = ; sparseArr[][] = ; sparseArr[][] = sum; int count = ; for (int i = ; i < chessArr.Length; i++)
{
for (int j = ; j < chessArr[i].Length; j++)
{
if (chessArr[i][j]!=)
{
count++;
sparseArr[count][] = i;
sparseArr[count][] = j;
sparseArr[count][] = chessArr[i][j];
}
}
} Console.WriteLine("\n稀疏数组的形式:"); foreach (var row in sparseArr)
{
foreach (var data in row)
{
Console.Write($"{data}\t");
} Console.WriteLine();
} int[][] newChessArr = new int[sparseArr[][]][]; for (int i = ; i < newChessArr.Length; i++)
{
newChessArr[i] = new int[sparseArr[][]];
} for (int i = ; i < sparseArr.Length; i++)
{
newChessArr[sparseArr[i][]][sparseArr[i][]] = sparseArr[i][];
} Console.WriteLine("\n还原后棋盘:");
foreach (var row in newChessArr)
{
foreach (var data in row)
{
Console.Write($"{data}\t");
} Console.WriteLine();
}
}
}

C#数据结构与算法系列(二):稀疏数组(SparseArray)的更多相关文章

  1. Java数据结构和算法(二)——数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  2. 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解

    数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...

  3. javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例

    栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...

  4. 数据结构与算法系列2 线性表 链表的分类+使用java实现链表+链表源码详解

    数据结构与算法系列2.2 线性表 什么是链表? 链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表的链接次序实现的一系列节点组成,节点可以在运行时动态生成,每个节点包括两个 ...

  5. 你听过稀疏数组(sparseArray)吗?

    稀疏数组(sparseArray) 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值 ...

  6. 稀疏数组SparseArray

    1 实际需求 1.1 需求提出 编写五子棋程序,有存盘退出和续上盘的功能. 实现思路: 存盘退出: 定义一个二维数组,默认值是0,黑子表示1,蓝子表示2,然后将二维数组通过流存储到文件中. 换言之:五 ...

  7. 剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计算法找其中的一个数

    题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 2 4 9 12 4 7 10 13 6 8 11 ...

  8. Java数据结构和算法(二):数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  9. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

随机推荐

  1. JS如何判断是否已经引入某个css或是js?

    http://bbs.csdn.net/topics/390541081 function isInclude(name){     var js= /js$/i.test(name);     va ...

  2. 转义URL 含有中文和特殊符号

    方法1: //这个方法被废弃了 NSString *urlString = @"https://www.cnblogs.com/huaida/#/程序员"; NSString* e ...

  3. 十、理解JavaBean

    1. 理解Bean 1.JavaBean本身就是一个类,属于Java的面向对象编程. 2.在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求: (1) ...

  4. Vue踩坑日记

    1.错误:找不到模块'eslint-config-standard' https://github.com/standard/eslint-config-standard/issues/84 我遇到了 ...

  5. scrapy.cmdline.execute

    scrapy的cmdline命令 1.启动爬虫的命令为:scrapy crawl (爬虫名) 2.还可以通过以下方式来启动爬虫 方法一:创建一个.py文件(这里的爬虫文件名可以自己定义,例:myspi ...

  6. opencv3学习1:opencv3.4.10与vs2017环境配置

    原教程网址:https://jingyan.baidu.com/article/dca1fa6f13bd55f1a44052b9.html 具体教程网上很多,我也相信大家的搜素能力,作为一个初入C++ ...

  7. Python的多线程锁跟队列

    一.互斥锁: 1.线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁. 2.互斥锁为资源引入一个状态:锁定.非锁定 3.某个线程要更改共享数据是,先将其锁定.此时资源的状态为锁定, ...

  8. web自动化之iframe操作

    from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...

  9. 4 CSS文本属性

    CSStext(文本)属性可定义文本外观,比如文本颜色,对齐文本,装饰文本,文本缩进,行间距等 4.1文本颜色 color属性用于定义文本颜色. div { color: red; } 颜色表示方法: ...

  10. elementUI中el-input输入数字且保留指定小数位

    <input type="text" placeholder="请输入保留一位小数的数字" class="user-input user-nam ...