软考21-上午题-数组、矩阵

数组:一组地址连续的空间。

数组是定长线性表在维数上的扩展,即,线性表中的元素又是一个线性表。

一、数组

数组的特点:

数组数目固定,一旦定义了数组结构,不再有元素个数的增减变化。因此,数组一般不做插入、删除操作,适合用于顺序存储结构。

1-1、一维数组

  • L:元素大小
  • LOC:元素首地址

数组从0开始:

ai的地址 = LOC + (i)*L

ai的前面有i个元素

数组从1开始:

ai的地址 = LOC + (i-1)*L

ai的前面有i-1个元素

1-2、二维数组

a[N][M]:N行、M列

L:元素大小

在内存中存储如下:

1、a[N][M]按行优先存储

求a[i][j]的首地址:

① 数组下标从0开始:a[0][0]

先求出 a[i][j]前面有多少行:i行

再求出 a[i][j]前面有多少列:j列

a[i][j] = LOC + (i * M + j) * L

②数组下标从1开始:a[1][1]

a[i][j] = LOC + [(i-1) * M + (j-1)] * L

2、a[N][M]按列优先存储

求a[i][j]的首地址:

① 数组下标从0开始:a[0][0]

先求出 a[i][j]前面有多少列:j列

再求出 a[i][j]前面有多少行:i行

a[i][j] = LOC + (j * N + i) * L

① 数组下标从1开始:a[1][1]

a[i][j] = LOC + [(j-1) * M + (i-1)] * L

3、特殊情况a[N][N]

对于N行N列数组

求a[i][i]时,不管是按行存储还是按列存储,其存储的首地址和该元素前面的元素个数,都是相同的。

示例:

1-3、真题

真题1:

真题2:

真题3:

二、矩阵

一个二维数组就是一个矩阵。

矩阵的存储,即,将一个二维数组的元素,压缩存储在一个一维数组中。

矩阵的压缩存储:

多个值相同的元素,分配一个存储单元;0不分配存储单元。

2-1、特殊矩阵

值相同的元素、0元素在矩阵中有一定的规律------特殊矩阵

2-1-1、对称矩阵

Aij = Aji

示例:

对称矩阵的存储:只存储主对角线的元素 + 下三角区(上三角区)的元素

存储的元素个数:(1+n)n/2

对称矩阵按行优先存储:

期望:通过A22------>a6

求:Aij

1、数组下表从0开始

①前i-1行有多少个元素?i*(1+i)/2

②第i行,前j-1列有几个元素?j

③再加上自己

Aij = i*(1+i)/2 + j + 1(当i >= j)

Aij = j*(1+j)/2 + i + 1(当i < j)

2、下标从1开始

2-1-2、三对角矩阵

三对角矩阵的存储:

只存储对角线上的非0元素。

期望:通过A33------>a10

求:Aij

2-2、稀疏矩阵

矩阵中,非0元素的个数远少于0元素的个数,非0元素分布没有规律。

示例:

稀疏矩阵的压缩存储:

  • 三元组顺序表(顺序存储)
  • 十字链表(链式存储)

2-2-3、三元组顺序表

2-2-4、十字链表

2-3、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

相关推荐
老虎062723 分钟前
JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
笔记·学习·微信小程序
@蓝莓果粒茶2 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
无名工程师2 小时前
AI 学习过程中各阶段的学习重点、时间规划以及不同方向的选择与建议等内容
人工智能·学习
试着2 小时前
零基础学习性能测试第五章:JVM性能分析与调优-垃圾回收器的分类与回收
jvm·学习·零基础·性能测试·垃圾回收器
livemetee2 小时前
Flink2.0学习笔记:Stream API 常用转换算子
大数据·学习·flink
WXX_s2 小时前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉
艾莉丝努力练剑3 小时前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
YGY Webgis糕手之路3 小时前
OpenLayers 快速入门(九)Extent 介绍
前端·经验分享·笔记·vue·web
花月mmc3 小时前
CanMV-K230 AI学习笔记系列
人工智能·笔记·学习
fengye2071614 小时前
板凳-------Mysql cookbook学习 (十二--------6)
学习·mysql·adb