34-对称矩阵的压缩存储
对于矩阵这样由n行n列构成的数据集合,可以通过二维数组来进行存储。
在实际工程中也会用到一些特殊的矩阵, 特殊矩阵可以“压缩”的一种思维来降低空间需求。
(1)对角矩阵
(2)对称矩阵
(3)上三角矩阵/下三角矩阵
1. 对称矩阵的压缩存储
若一个n阶方阵A[n][n]中的元素满足aij=aji(0≤i,j≤n-1),则称其为n阶对称矩阵。
对称矩阵的压缩存储的策略:
存储时可只存储对称矩阵中上三角或下三角中的元素,使得对称的元素共享一个存储空间。
当在确定了这样的策略后,在原有的n阶矩阵中一共有n2个元素,在以行序为主序存储其下三角+对角线的元素时,只需要存储n(n+1)/2个元素。当在以行序为主序存储其上三角+对角线的元素时也只需要存储n(n+1)/2个元素。
2. 对称矩阵的压缩存储
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define N 4//为N阶对称矩阵初始化存储空间
void Init_arr(int **p)
{if(p == NULL){return;}//当确定了矩阵的压缩存储方式后,就可以分配存储空间了*p = (int *)malloc(sizeof(int) *(N*(N+1)/2));
}//将A[i][j]的值e存储到b中
void arr_Assign(int *b , int e , int i , int j)
{if(i >= j){ //存储下三角的数据元素到数组B中b[i*(i+1)/2 + j] = e;}else{//存储上三角的数据元素到数组B中b[j*(j+1)/2 +i] = e;}
}//返回存储在b[M]中的A[i][j]值
int arr_Value(int *b , int i, int j)
{//取出数组b中的下三角数据元素if(i >= j){return b[ i * (i + 1) / 2 + j];}else{return b[j * (j + 1) / 2 + i];}
}//输出压缩存储在b中的对称矩阵
void Disp(int *b)
{int i;int j;for(i = 0; i < N; i++){for(j = 0; j < N; j++){printf("%4d" , arr_Value(b , i,j));}printf("\n");}
}//销毁存储空间
void Destroy(int *b)
{free(b);b = NULL;
}int main(void)
{int *arrB = NULL;int i = 0;int j = 0;int value = 0;Init_arr(&arrB);printf("请输入对称矩阵的下三角部分:\n");for(i = 0; i < N; i++){printf("输入第%d行的%d个数据元素: ", i+1, i+1);for(j = 0; j <= i; j++){scanf("%d" , &value);arr_Assign(arrB,value , i,j);}}//打印输出printf("输出对称矩阵;\n");Disp(arrB);Destroy(arrB);return 0;
}
34-对称矩阵的压缩存储相关推荐
- 矩阵-----对称矩阵及其压缩存储稀疏矩阵
什么是对称矩阵(SymmetricMatrix)? 对称对称-------看 设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 <= i <= N-1 & ...
- 数据结构上机实践第八周项目7—对称矩阵的压缩存储及基本运算
对称矩阵的压缩存储及基本运算 贺老师的慕课当中,给我们拓展了这样的知识. 所以,本次的项目实践要求如下: 用压缩形式存储对称矩阵,实现下面的操作并测试 void Init(int *&b);/ ...
- 第八周实践项目7 对称矩阵的压缩存储及基本运算
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目7- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...
- c语言对称矩阵的压缩存储_【数据结构】对称矩阵及对称矩阵的压缩存储
对称矩阵: 设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 <= i <= N-1 && 0 <= j <= N-1),则矩阵A是对 ...
- c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享
压缩存储数据是一个比较高效.节省空间的方法,当我们存储的数据足够大时,我们要尽量避免数据的冗余重复,减少空间的浪费.对阵矩阵的压缩存储就是一个简单的实例. 算法分析与设计 如下图所示,我们要存储的是一 ...
- c语言对称矩阵的压缩存储_线性代数(三) 特殊矩阵
本文将以知识点的形式展开介绍,读者可根据需要自动跳转至相应部分,具体内容如下: (1)单位矩阵(2)对称矩阵(3)对角矩阵(4)正交矩阵(5)伴随矩阵(6)可逆矩阵(7)奇异矩阵(8)初等矩阵(9)行 ...
- java数据结构至对称矩阵压缩存储
刚刚刷java选择题,遇到的对称矩阵压缩存储问题,我们知道对称矩阵是aij=aji的矩阵,压缩存储可以采用一维数组和二维数组存储. 此处只讨论一维数组存储的形式,设数组下标从0开始,对称矩阵为n维矩阵 ...
- 数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)
文章目录 1. 对称矩阵 2. 三角矩阵 3. 三对角矩阵 4. 稀疏矩阵 1. 对称矩阵 对称矩阵的定义: 若n阶方阵中任意一个元素a,都有a(i,j)=a(j,i)则该矩阵为对称矩阵 也就是说对称 ...
- 数据结构--三角矩阵的压缩存储
三角矩阵 三角矩阵的常用压缩方式有两种: 线性压缩 使用三角形的二维数组压缩 线性压缩存储三角矩阵 下三角矩阵: 上三角矩阵: 以下三角矩阵的线性压缩存储为例,进行实现: package pers.z ...
最新文章
- 2021年春季学期-信号与系统-第八次作业参考答案-第十二小题
- 《多处理器编程的艺术》读书笔记(4)--- 自旋锁(1)
- python with 打开多个文件
- 图像的读取,显示与保存(基于skimage模块)
- Eclipse与MyEclipse增强代码提示
- Delphi 与 DirectX 之 DelphiX(72): TDIB.SephiaEffect();
- java handlersocket_HandlerSocket java客户端
- usb接口驱动_乾坤合一~Linux设备驱动之USB主机和设备驱动
- 3.Event Delegate
- flink的watermark简单理解
- 多线程—— Queue(储存进程结果)
- rabbitmq消费者设置手动ack
- 【echarts 中国地图】vue实现中国地图,省份居中china.json文件下载
- VAssistX使用总结
- 大学生计算机vfp,计算机vfp教学课件
- 为酒店设计一套计算机网络管理系统,酒店管理系统设计与方案.doc
- 【Simscape】用Simscape实现三维物理仿真(二)——创建一个斜坡滚球系统
- java 带根号的开平方
- zcmu1684 求余数
- Word高效指南 - 快速合并多个文档