24考研数据结构-数组和特殊矩阵

目录

  • 数据结构:数组与特殊矩阵
    • 数组
      • 数组的特点
      • 数组的用途
    • 特殊矩阵
      • 对角矩阵
      • 上三角矩阵和下三角矩阵
      • 稀疏矩阵
      • 特殊矩阵的用途
    • 结论
  • 3.4 数组和特殊矩阵
    • 3.4.1数组的存储结构
    • 3.4.2普通矩阵的存储
    • 3.4.3特殊矩阵的存储
      • 1. 对称矩阵(方阵)
      • 2. 三角矩阵(方阵)
      • 3. 三对角矩阵(方阵)带状
      • 4. 稀疏矩阵

数据结构:数组与特殊矩阵

数据结构是计算机科学中的基础概念,它涉及组织和存储数据的方式以及对数据的操作。在数据结构中,数组和特殊矩阵是两种常见的数据组织形式。本文将对数组和特殊矩阵进行介绍,并讨论它们在实际应用中的特点和用途。

数组

数组是一种线性数据结构,它由相同类型的元素按照一定顺序组成。数组的特点是在内存中连续存储元素,可以通过索引快速访问其中的元素。数组的索引通常从0开始,表示数组中元素的位置。例如,一个长度为n的数组A,其元素可以表示为A[0]、A[1]、A[2]、…、A[n-1]。

数组的特点

  • 快速访问:由于数组中元素在内存中连续存储,可以通过索引直接访问数组中的元素,具有快速访问的特点。
  • 固定大小:数组在创建时需要指定大小,且大小固定,无法在运行时动态改变大小。
  • 存储效率高:由于元素在内存中连续存储,使得数组的存储效率较高。

数组的用途

数组在实际应用中有着广泛的用途,例如:

  • 数据存储:用于存储一系列数据元素,如整数、字符、浮点数等。
  • 数据统计:用于统计一组数据中的最大值、最小值、平均值等。
  • 排序算法:在各种排序算法中,数组是常用的数据结构。

数组的使用非常灵活,它在算法和数据处理领域有着重要的地位。

特殊矩阵

特殊矩阵是一种二维数据结构,它具有某种特殊的规律或特点,使得在特定情况下能够对其进行更高效的存储和操作。特殊矩阵通常有以下几种类型:

对角矩阵

对角矩阵是一种除了主对角线以外的所有元素都为零的矩阵。例如,一个n阶对角矩阵D可以表示为:

d[i][j] = 0, i ≠ j
d[i][j] ≠ 0, i = j

对角矩阵在存储和运算时,可以只保存主对角线上的元素,大大节省了存储空间和运算时间。

上三角矩阵和下三角矩阵

上三角矩阵和下三角矩阵是一种在主对角线上方或下方的所有元素都为零的矩阵。上三角矩阵的下方元素都为零,下三角矩阵的上方元素都为零。这些矩阵在存储和运算时,也可以只保存非零元素,节省存储空间和运算时间。

稀疏矩阵

稀疏矩阵是一种大部分元素都为零的矩阵。在实际应用中,很多矩阵都是稀疏矩阵,例如图像处理中的像素矩阵。对于稀疏矩阵,存储所有元素将会浪费大量的存储空间。因此,可以采用压缩存储方法,只存储非零元素及其位置,从而节省存储空间。

特殊矩阵的用途

特殊矩阵在很多领域都有着广泛的应用,尤其在数值计算和科学工程中。它们可以优化矩阵的存储和运算效率,提高算法的执行速度。

结论

数组和特殊矩阵是两种常见的数据结构,在计算机科学和工程中都有着广泛的应用。数组是一种简单而高效的数据组织形式,用于存储一系列相同类型的元素。特殊矩阵是一种具有特殊规律的二维数据结构,能够优化矩阵的存储和运算效率。

在实际应用中,我们可以根据具体问题的特点选择合适的数据结构,以提高算法的效率和性能。同时,对于特殊矩阵,我们可以采用压缩存储方法来节省存储空间,使得数据处理更加高效和便捷。通过合理选择和使用数据结构,我们可以优化算法的执行效率,提高计算机程序的性能。

3.4 数组和特殊矩阵

矩阵定义: 一个由m*n个元素排成的m行(横向)n列(纵向)的表。
矩阵的常规存储:将矩阵描述为一个二维数组。

3.4.1数组的存储结构

  1. 一维数组
    Elemtype a[10];

各数组元素大小相同,物理上连续存放;

起始地址:LOC

数组下标:默认从0开始!

数组元素 a[i] 的存放地址 = LOC + i × sizeof(ElemType)

在这里插入图片描述

  1. 二维数组

Elemtype b[2][4]; //2行4列的二维数组

行优先/列优先存储优点:实现随机存储

在这里插入图片描述

起始地址:LOC

M行N列的二维数组 b[M][N] 中,b[i][j]的存储地址:

行优先存储: LOC + (i×N + j) × sizeof(ElemType)
列优先存储:LOC + (j×M + i) × sizeof(ElemType)

3.4.2普通矩阵的存储

在这里插入图片描述

二维数组存储:

  • 描述矩阵元素时,行、列号通常从1开始;
  • 描述数组时,通常下标从 0 开始;

3.4.3特殊矩阵的存储

特殊矩阵——压缩存储空间(只存有用的数据

矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。

1. 对称矩阵(方阵)

在这里插入图片描述
列优先:

  • n >1
    n+ (n-1)+ ······+(i-j)+1

  • n = 1
    i-j+1

在这里插入图片描述

2. 三角矩阵(方阵)

在这里插入图片描述

n + (n-1) +······(n-i+1) +(j-i)

在这里插入图片描述

3. 三对角矩阵(方阵)带状

在这里插入图片描述
在这里插入图片描述

4. 稀疏矩阵

在这里插入图片描述
设在mn的矩阵中有t个非零元素,令c=t/(mn),当c<=0.05时称为稀疏矩阵。
压缩存储原则:存各非零元的值、行列位置和矩阵的行列数。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像处理之hough圆形检测

hough检测原理 点击图像处理之Hough变换检测直线查看 下面直接描述检测圆形的方法 基于Hough变换的圆形检测方法 对于一个半径为 r r r&#xff0c;圆心为 &#xff08; a , b &#xff09; &#xff08;a,b&#xff09; &#xff08;a,b&#xff09;的圆&#xff0c;我们将…

vscode里安装Go插件和配置Go环境

vscode是一款跨平台、轻量级、插件多的开源IDE&#xff0c;在vscode不仅可以配置C/C、Python、R、Ruby等语言的环境&#xff0c;还可以配置Go语言的环境。这里介绍在vscode里安装Go语言的插件和配置Go语言环境&#xff0c;系统是Win10 64位。 1、下载Go安装包和配置GOROOT、GO…

一年级数学 数一数(一到十)

今天我们来学习数一数 有一些老人 眼睛可能花了 需要我们在动物园数清楚是多少个动物 然后告诉他们 可能有的小朋友 不知道某些数字怎么读 您可以打开地址 https://fanyi.baidu.com/?aldtype16047#zh/en/ 将数字 输入到 输入框内 然后点击 下面的小话筒 系统就会读出来了 小…

高忆管理:多重利好共振 外资加码布局A股

资本商场活泼信号正在继续开释&#xff0c;内外资决心取得有力提振。以北向资金为代表的外资近来表现活泼&#xff0c;近六个买卖日已连续净买入超500亿元。多家外资组织近期表态称&#xff0c;伴跟着方针力度加强&#xff0c;我国经济有望继续复苏&#xff0c;活泼看好我国权益…

2023年8月美团外卖3-18元红包优惠券天天领取活动日历及美团外卖红包领取使用

2023年8月美团外卖3-18元红包天天领取活动日历 根据上图美团外卖红包领取活动时间表以下时间可以天天领取3-18元美团外卖红包优惠券&#xff1a; 1、2023年8月18日 可领取美团外卖18元神券节红包&#xff1b; 2、2023年8月每周六、周日每天可领取12元美团外卖节红包&#xff…

【C++】类和对象-继承

0.前言 1.基本语法 继承的用处就是极大的减少代码的重复性&#xff0c;如果没有用继承&#xff0c;看看以下代码&#xff0c;你知道了。。。。 基本实现代码&#xff1a; #include <iostream> using namespace std; /******************************************/void …

万界星空/推出生产制造执行MES系统/开源MES/免费下载

免费MES系统介绍 什么是MES系统呢&#xff1f;MES系统主要功能就是解决“如何生产”的问题。通过实施MES系统&#xff0c;一站式解决您所困扰的所有生产制作流程问题。 普通的免费MES系统只提供简单的基本功能让客户体验&#xff0c;而万界星空MES系统运用低代码的形式开发&a…

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-初始化列表之后执行

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-初始化列表之后执行 二开位置 OnlineAutoList.js.initAutoList 定义方法 /*** 初始化列表之后执行* js增强* param tableColumns* returns {Promise<void>|*}*/onlineTableContext["afterInitAutoList…

Codeforces Round 855 (Div. 3) E题题解

文章目录 [ Unforgivable Curse (hard version)](https://codeforces.com/contest/1800/problem/E2)问题建模问题分析方法1分析性质1.分析操作对元素位置的影响2.分析可以使用操作的元素可以与相邻元素交换位置的作用代码 方法2通过DFS得到相互可以交换位置的字符集合代码 方法…

Spring Boot的自动配置原理

一.原理解释 Spring Boot的自动配置是Spring框架的一个重要特性&#xff0c;它旨在简化应用程序的开发和部署过程。自动配置通过基于类路径中的依赖关系和配置文件内容来预先配置Spring应用程序的各种组件和功能。这样&#xff0c;我们可以在无需显式配置大量参数的情况下&…

消息中间件应用场景介绍

提高系统性能首先考虑的是数据库的优化&#xff0c;但是数据库因为历史原因&#xff0c;横向扩展是一件非常复杂的工程&#xff0c;所有我们一般会尽量把流量都挡在数据库之前。 不管是无限的横向扩展服务器&#xff0c;还是纵向阻隔到达数据库的流量&#xff0c;都是这个思路。…

更安全,更省心丨DolphinDB 数据库权限管理系统使用指南

在数据库产品使用过程中&#xff0c;为保证数据不被窃取、不遭破坏&#xff0c;我们需要通过用户权限来限制用户对数据库、数据表、视图等功能的操作范围&#xff0c;以保证数据库安全性。为此&#xff0c;DolphinDB 提供了具备以下主要功能的权限管理系统&#xff1a; 提供用户…

STM32 DMA学习

DMA简称 DMA&#xff0c;Direct Memory Access&#xff0c;即直接存储器访问。DMA传输方式无需CPU直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场的过程&#xff0c;通过硬件为RAM与I/O设备开辟一条直接传送数据的通路&#xff0c;能使CPU的效率大为提高。…

LabVIEW开发航天器动力学与控制仿真系统

LabVIEW开发航天器动力学与控制仿真系统 计算机仿真是工程设计和验证的非常有用的工具。它节省了大量的时间、金钱和精力。航天器动力学与控制仿真系统由LabVIEW程序开发&#xff0c;它是模拟航天器等动态系统的有用工具。还可轻松与硬件连接并输出真实信号。 项目采用系统工…

偷懒神器-->花样的代码生成工具

1、CRUD代码生成&#xff1a; 根据MyBatisPlus逆向工程改造而来&#xff0c;添加了showDoc文档生成&#xff0c;数据库脚本生成&#xff0c;增删改查文件生成&#xff0c;Po、Vo、Request对象生成等。普通的增删改查一般搞定。并预调了部份判断逻辑。 效果示例&#xff1a; p…

“用户登录”测试用例总结

前言&#xff1a;作为测试工程师&#xff0c;你的目标是要保证系统在各种应用场景下的功能是符合设计要求的&#xff0c;所以你需要考虑的测试用例就需要更多、更全面。鉴于面试中经常会问“”如何测试用户登录“”&#xff0c;我们利用等价类划分、边界值分析等设计一些测试用…

git的clone,上传,mirror与upstream同步

文章目录 clone日志信息的同步子树合并同步 clone clone他人项目&#xff0c;git到自己的项目 rm -rf .git .git存放原始项目的日志信息&#xff0c;这里需要添加自己的日志信息&#xff0c;需要删除重写。也可手动删除 git init 初始化文件&#xff0c;依据本地日志信息生产.…

Gradle和Maven的区别

Gradle和Maven 当涉及到构建和管理项目时&#xff0c;Gradle和Maven是两个非常流行的选项。本文将讨论Gradle和Maven之间的区别以及它们的配置信息差异。 1. Gradle和Maven的区别 1.1 构建脚本语言 Maven使用XML作为构建脚本语言&#xff0c;而Gradle使用基于Groovy的DSL&…

c 语言解析 时间字符串

#include <iostream> #include <ctime>int main(int argc, char *argv[]) {struct tm timeinfo;char cur_time[] "current time: 2021-09-06 23:50:13";// 解析时间到timeinfo中strptime(cur_time, "current time: %Y-%m-%d %H:%M:%S", &…

查看内存类型和频率 - Win系统

查看内存类型和频率 - Win系统 问题方法1&#xff08;推荐&#xff09;&#xff1a;使用命令行方法2&#xff1a;使用CPU-Z方法3&#xff1a;使用AIDA64 问题 我们在为电脑扩充内存时需要提前了解电脑内存的类型和频率&#xff0c;防止内存不兼容&#xff0c;但在设备管理器和…