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

news2024/11/16 19:42:56

目录

  • 数据结构:数组与特殊矩阵
    • 数组
      • 数组的特点
      • 数组的用途
    • 特殊矩阵
      • 对角矩阵
      • 上三角矩阵和下三角矩阵
      • 稀疏矩阵
      • 特殊矩阵的用途
    • 结论
  • 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.coloradmin.cn/o/807552.html

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

相关文章

Meta-Transformer 多模态学习的统一框架

Meta-Transformer是一个用于多模态学习的新框架&#xff0c;用来处理和关联来自多种模态的信息&#xff0c;如自然语言、图像、点云、音频、视频、时间序列和表格数据&#xff0c;虽然各种数据之间存在固有的差距&#xff0c;但是Meta-Transformer利用冻结编码器从共享标记空间…

【嵌入式学习笔记】嵌入式基础11——STM32常用轮子(SYSTEM)

1.deley文件夹介绍 1.1.delay文件夹介绍 函数名函数功能OSdelay_osschedlockus级延时时,关闭任务调度(防止打断us级延迟)OSdelay_osschedunlockus级延时时,恢复任务调度OSdelay_ostimedlyus级延时时,恢复任务调度OSSysTick_Handlersystick中断服务函数OSdelay_init初始化延迟…

MySQL服务无法启动,服务没有报告任何错误

MySQL服务无法启动&#xff0c;服务没有报告任何错误 昨天mysql服务还好好的&#xff0c;今天怎么都打不开。my.ini配置和端口都没有问题&#xff0c;只能备份一下data的数据&#xff0c;删除data文件夹&#xff0c;初始化mysqld。 一定要备份data数据&#xff01;&#xff01;…

【算法和数据结构】257、LeetCode二叉树的所有路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;首先看这道题的输出结果&#xff0c;是前序遍历。然后需要找到从根节点到叶子节点的所有路径&#xff…

苍穹外卖-day06

苍穹外卖-day06 本项目学自黑马程序员的《苍穹外卖》项目&#xff0c;是瑞吉外卖的Plus版本 功能更多&#xff0c;更加丰富。 结合资料&#xff0c;和自己对学习过程中的一些看法和问题解决情况上传课件笔记 视频&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6/?sp…

什么是 HTTP 长轮询?

什么是 HTTP 长轮询&#xff1f; Web 应用程序最初是围绕客户端/服务器模型开发的&#xff0c;其中 Web 客户端始终是事务的发起者&#xff0c;向服务器请求数据。因此&#xff0c;没有任何机制可以让服务器在没有客户端先发出请求的情况下独立地向客户端发送或推送数据。 为…

【java的类型数据】——八大类型数据

文章目录 前言字面常量字面常量的分类: 数据类型和变量变量的包装类和范围范围整型变量byteintshortlong 浮点型变量双精度浮点型double单精度浮点型float 字符型变量char布尔型变量 boolean 类型转换自动类型转换&#xff08;隐式&#xff09;强制类型转换&#xff08;显式&am…

tinkerCAD案例:20. Simple Button 简单按钮和骰子

文章目录 tinkerCAD案例&#xff1a;20. Simple Button 简单按钮Make a Trick Die tinkerCAD案例&#xff1a;20. Simple Button 简单按钮 Project Overview: 项目概况&#xff1a; This is a series of fun beginner level lessons to hone your awesome Tinkercad skills a…

8.docker仓库

文章目录 Docker仓库本地私有仓库Docker HarborDocker harbor部署访问页面创建用户下载私有仓库镜像harbor同步 Docker仓库 本地私有仓库 ##先下载 registry 镜像docker pull registry##修改配置文件&#xff0c;在 daemon.json 文件中添加私有镜像仓库地址vim /etc/dock…

第三节 C++ 运算符

文章目录 掌握知识点1. 运算符概述1.1 算术运算符1.1.1 加&#xff0c;减&#xff0c;乘&#xff0c;除1.1.2 自增&#xff0c;自减1.1.3 取模运算 % 1.2 赋值运算符1.3 比较运算符1.4 逻辑运算符 2. 编程题&#xff1a;运算符使用2.1 计算器2.2 位数分离2.3 鸡兔同笼问题 掌握…

重学C++系列之智能指针简单介绍

一、什么是智能指针 在使用堆内存时&#xff0c;就像使用栈内存空间一样&#xff0c;可以实现自释放的功能&#xff0c;智能指针在C库中也是类模板之一。 二、智能指针有几种 有四种。auto_ptr, unique_ptr, shared_ptr, weak_ptr 其中后三个是C11支持&#xff0c;第一个已经被…

递归:一个图教学会递归原理

递归的特点 实际上&#xff0c;递归有两个显著的特征,终止条件和自身调用: 自身调用&#xff1a;原问题可以分解为子问题&#xff0c;子问题和原问题的求解方法是一致的&#xff0c;即都是调用自身的同一个函数。终止条件&#xff1a;递归必须有一个终止的条件&#xff0c;即不…

软考A计划-系统集成项目管理工程师-项目人力资源管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

百度与AI:历史、投资和监管

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 百度的人工智能在中国具有先发优势 随着ChatGPT的爆火&#xff0c;人工智能重新引起了投资者的注意&#xff0c;然而人工智能并不是突然爆火的&#xff0c;而是全球众多公司在人工智能技术上进行数十年如一日的研发和积累&a…

Vite创建Vue+TS项目引入文件路径报错

使用vite搭建vue3脚手架的时候&#xff0c;发现main.ts中引入App.vue编辑器会报错&#xff0c;但是不影响代码运行。 报错信息&#xff1a;TS2307: Cannot find module ‘./App.vue’ or its corresponding type declarations. 翻译过来是找不到模块或者相关的声明类型&#…

发现问题:edge浏览器的效率模式会导致setTimeout/setInterval变慢

问题描述 当edge浏览器启用效率模式后&#xff0c;setTimeout/setInterval运行一段时间后&#xff0c;执行间隔会变慢。 开启后&#xff1a; 关闭效率模式&#xff1a;

pspice导入元件Orcad spice模型

想要使用英飞凌一款驱动芯片&#xff0c;型号&#xff1a;1EDN7550U&#xff0c;在贸泽等各大网站上都没有找到改元件的spice仿真模型&#xff0c;经过一番摸索&#xff0c;终于找到了。 1、首先去芯片官网上查找该元件&#xff1b;找到该元件的spice模型 2、下载下来&#xff…

第十一章:deque类

系列文章目录 文章目录 系列文章目录前言deque的介绍deque的使用deque的缺陷deque的应用总结 前言 deque是一种双开口的“连续空间”的容器。 deque的介绍 deque(双端队列)&#xff1a;是一种双开口的"连续"空间的数据结构&#xff0c;双开口的含义是&#xff1a;可…

消息中间件RabbitMQ——学习笔记

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

前端文件上传实践与后端处理——文件分块上传

文件上传是现代Web应用程序中常见的功能之一。在这篇博客中&#xff0c;我们将探讨一个简单但完整的前端文件上传实践&#xff0c;同时提供一个后端示例&#xff0c;演示如何处理上传的文件。我们将使用JavaScript作为前端语言&#xff0c;并结合Node.js作为后端环境。让我们开…