数据结构学习笔记(6)--特殊矩阵的压缩存储

1.数组的存储结构

(1)一维数组的存储结构

起始地址:LOC

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

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

注:除非题目特别说明,否则数组下标默认从0开始。

(2)二维数组的存储结构

M行N列的二维数组b[M][N]中,

若按行优先存储,则b[i][j]的存储地址=LOC+(i*N+j)*sizeof(ElemType);

若按列优先存储,则b[i][j]的存储地址=LOC+(j*M+i)* sizeof(ElemType).

2.特殊矩阵的存储

(1)对称矩阵的压缩存储

策略:只存储主对角线+下三角区

按行优先原则将各元素存入一维数组中,该一维数组的长度应该设置为(1+n)*n/2。

key:按行优先的原则,a[i][j]是第i(i-1)/2+j个元素,数组下标k=i(i-1)/2+j-1(数组下标从0开始)

ai,j存储在一维数组中对应B[k]

k=i(i-1)/2+j-1,i>=j(下三角区和主对角线元素)

k=j(j-1)/2+i-1,i<j(上三角区元素ai,j=aj,i)

(2)三角矩阵的压缩存储

压缩存储策略:按行优先原则先将下三角存入一维数组中,并在最后一个位置存储常量c

一维数组的长度:n(n+1)/2+1

①上三角区是常数

ai,j转B[k],k=i(i-1)/2+j-1,i>=j(下三角区和主对角线元素)

k=n(n+1)/2,i<j(上三角区元素)

②下三角区是常数

ai,j转B[k],k=(i-1)(2n-i+2)/2+(j-i),j<=j(上三角区和主对角线元素)

k=n(n+1)/2,i>j(下三角区元素)

(3)三对角矩阵的压缩存储

三对角矩阵,又称带状矩阵:

当|i-j|>1时,有ai,j = 0(1<=i,j<=n)

压缩存储策略:

按行优先(或按列优先)原则,只存储带状部分

一维数组的长度:3n-2

前i-1行共3(i-1)-1个元素

ai,j是i行第j-i+2个元素

ai,j是第2i+j+2个元素

ai,j转B[k],k=2i+j-3

(4)稀疏矩阵的压缩矩阵

稀疏矩阵:非零元素远远少于矩阵元素的个数

压缩存储策略:链式存储--十字链表法

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

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

相关文章

AutoCAD 2024 for Mac(cad设计绘图工具) v2024.3中文激活版

AutoCAD是一款强大的CAD软件&#xff0c;适合于各种领域的设计和绘图。它具有二维图形和三维建模功能、多种文件格式支持、自定义命令和样式、批处理和脚本等特点&#xff0c;可以帮助用户实现高质量的设计和建模。同时&#xff0c;AutoCAD还支持云端存储和共享&#xff0c;方便…

【webrtc】RtpToNtpEstimator:将 RTP 时间戳映射到 NTP 时间

m98 RtpToNtpEstimator 这个函数的实现反映了实时通信中对于时间同步精确度的高要求,以及处理网络通信中常见的问题(如延迟变化、时间回绕)的复杂性。 RtpToNtpEstimator::UpdateMeasurements 是 WebRTC 中一个用于将 RTP 时间戳映射到 NTP 时间的函数。这个函数的核心功能是…

MySQL之数据库相关操作学习笔记(一)

数据库相关操作 数据库表创建 定义逻辑库、数据表 DML 添加修改删除查询 DCL 用户权限事务 DDL 逻辑库数据表视图索引 DCL (Data Control Language) 示例 DCL&#xff08;数据控制语言&#xff09;主要用于控制数据库用户的访问权限和管理事务。DCL 主要包含两类语句&…

Spring源码之BeanDefinition的加载

Spring源码之BeanFactory和BeanDefinition BeanFactory和BeanDefinitionBeanFactoryBeanDefinition源码分析创建AnnotationConfigApplicationContext对象注册配置类refresh方法 BeanFactory和BeanDefinition BeanFactory BeanFactory是Spring提供给外部访问容器的根接口&…

Spring Boot整合Redis

Spring Boot整合Redis Spring Boot 整合 Redis 是一种常见的做法&#xff0c;用于在 Spring Boot 应用程序中添加缓存、会话管理分布式锁等功能。 浅谈Redis Redis用于存储数据&#xff0c;且在内存当中进行存储。 但是在日常编写代码时&#xff0c;定义一个变量也就是属于在内…

关于vlookup的第一个参数的个人理解

VLOOKUP&#xff08;查阅值&#xff0c;包含查阅值和返回值的查找区域&#xff0c;查找区域中返回值的列号&#xff0c;精确查找或近似查找&#xff09; 我个人理解&#xff0c;第一个参数应该叫线索值&#xff0c;因为我们要通过它去找与其对应的&#xff08;也就是与其同行的…

代码随想录-算法训练营day57【单调栈01:每日温度、下一个更大元素I】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第十章 单调栈part01● 739. 每日温度 ● 496.下一个更大元素 I 详细布置 739. 每日温度 今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。大家可以读题,思考暴力的解法,然后在看单调栈的解法。 就能感…

7-zip安装教程

一、简介 7-Zip 是一款开源的文件压缩软件&#xff0c;由 Igor Pavlov 开发。它具有高压缩比、支持多种格式、跨平台等特点。使用 C语言编写&#xff0c;其代码在 Github 上开源。 7-Zip的官网&#xff1a; 7-Zip 7-zip官方中文网站&#xff1a; 7-Zip 官方中文网站 7-Zip 的 G…

Day 10:100322. 删除星号以后字典序最小的字符串

Leetcode 100322. 删除星号以后字典序最小的字符串 给你一个字符串 s 。它可能包含任意数量的 ‘’ 字符。你的任务是删除所有的 ’ 字符。 当字符串还存在至少一个 ‘*’ 字符时&#xff0c;你可以执行以下操作&#xff1a; 删除最左边的 ‘*’ 字符&#xff0c;同时删除该星号…

Java与Web前端:技术融合与未来展望

Java与Web前端&#xff1a;技术融合与未来展望 在当今数字化时代&#xff0c;Java和Web前端技术无疑是软件开发领域的两大重要支柱。它们各自拥有独特的优势和应用场景&#xff0c;但同时也在不断地相互融合&#xff0c;共同推动着技术的发展与创新。本文将从四个方面、五个方…

C语言 | Leetcode C语言题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; int numDistinct(char* s, char* t) {int m strlen(s), n strlen(t);if (m < n) {return 0;}unsigned long long dp[m 1][n 1];memset(dp, 0, sizeof(dp));for (int i 0; i < m; i) {dp[i][n] 1;}for (int i m - 1; i > 0;…

用C++做一个跑酷游戏

要用C创建一个跑酷游戏是一个相对复杂的任务&#xff0c;因为它涉及到图形渲染、用户输入处理、物理模拟等多个方面。由于C本身并不直接支持图形渲染&#xff0c;我们通常需要使用一个图形库来帮助我们实现这一点。 一个常用的选择是使用SFML&#xff08;Simple and Fast Mult…

Springboot校园食堂智能排餐系统-计算机毕业设计源85935

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对校园食堂智能排餐系统等问题&#xff0c;对…

C语言题目:单词个数统计

题目描述 编写一个程序&#xff0c;输入一个字符串&#xff08;长度不超过80&#xff09;&#xff0c;然后统计出该字符串当中包含有多少个单词。例如&#xff1a;字符串“this is a book”当中包含有4个单词。 输入格式 输入一个字符串&#xff08;长度不超过80&#…

Tailwind Classes 我希望早点知道的

以下是一些我希望早点知道的 Tailwind 类&#xff0c;这些类使我的开发过程更加高效&#xff0c;让我的设计更加精致。 line-clamp line-clamp 类在处理多行文本截断时非常有用。它允许你控制显示的文本行数&#xff0c;并截断其余部分。这对于创建一致外观的元素&#xff08;如…

抖音 UG 社招一面算法原题

史上最严热点新机制 或许是受到前段时间「巴黎丢作业」的影响&#xff0c;抖音近日&#xff08;5月27日&#xff09;实施了新的热点内容核实机制。 具体来说&#xff0c;若用户在抖音以热点事件当事人身份发声&#xff0c;抖音将联系当事人进行身份认证。 逾期未认证的用户&…

Flutter开发效率提升1000%,Flutter Quick教程之在特定位置插入Widget

当我们要将Widget插入一个Column,Row或者Listview等有多个子元素的Widget的时候&#xff0c;有两种情况&#xff0c;一种是顺序插入&#xff0c;一种是非顺序插入。顺序插入就是Widget的排列顺序和插入顺序相同&#xff0c;非顺序插入则不是。 一&#xff0c;顺序插入。如图所…

微信小程序播放音频

微信小程序是一种轻量化、便捷的应用程序&#xff0c;让用户可以直接在微信内享受各种服务。其中&#xff0c;播放音频是微信小程序中非常常见的功能之一。在本文中&#xff0c;我们将详细讲解如何在微信小程序中播放音频。 第一步&#xff0c;准备音频文件 在开始使用微信小程…

Vue进阶之Vue无代码可视化项目(三)

Vue无代码可视化项目 项目初始化store的使用DataSourceView.vuestores/counter.ts开发模式按钮store/editor.tsLayoutView.vue导航条安装图标iconpackage.jsonstore/debug.tssrc/components/AppNavigator.vueAppNavigator.ts:AppNavigator.vue:theme样式theme/reset.csstheme/v…

重庆耶非凡科技有限公司的选品师项目加盟靠谱吗?

在当今电子商务的浪潮中&#xff0c;选品师的角色愈发重要。而重庆耶非凡科技有限公司以其独特的选品师项目&#xff0c;在行业内引起了广泛关注。对于想要加盟该项目的人来说&#xff0c;项目的靠谱性无疑是首要考虑的问题。 首先&#xff0c;我们来看看耶非凡科技有限公司的背…