【数据结构入门】一、数组

ops/2025/2/12 9:50:33/

一、数组的概念

数组:一种由相同类型的数据元素组成的基本数据类型,为引用类型

二、数据的顺序

这里很奇怪,讲了一个寻址函数,就是怎样用坐标求该元素的内存地址。说实话我不知道求这个能干什么,但是感觉还挺好玩的,所以就看了看。

1.一维数组:

设有一维数组A1[b,b+1,b+2,…,b+n-1],如果每个数组元素占据s个地址单元,那么寻址函数为:
Loc(i) = Loc(b)+(i-b)xs

2.二维数组:

设有二维数组A2[r,r+1,r+2,…r+m-1][c,c+1,c+2,…c+n-1];
分两种情况:
(1)以行优先
Loc(i,j)=Loc(r,c)+[(i-r)xn+(j-c)]xs
解释一下,这里从第一行开始算起,我求的这个元素是(i,j),那么已经占了(i-r)行,每行都已经被占满了,占的数量就是n,因此xn,最后一行没占满,只占到j列,那么就是(j-c)列,最后每个元素占s个地址单元,再乘以s,加上初始的第一个元素的内存地址,就能算出当前的内存地址是多少了
(2)以列优先
跟上面的规则一样,只是这次我们从第一列开始算起,因此可得公式:
Loc(i,j)=Loc(r,c)+[(j-c)xm+(i-r)]xs
如果还没理解的,我在下面举个例子,自己算一遍就懂了:

     设二维数据a[1...10][2...8]的基地址为1024,每个元素占2个存储单元,若以行优先顺序存储,则元素a[5,3]的地址是多少?若是列优先呢?解:行优先:1024+[(5-1)X(8-2+1)+(3-2)]X2=1082列优先:1024+[(3-2)X(10-1+1)+(5-1)]X2=1052

3.三维数组:

更多维度的逻辑也都是一样的,因为目前涉及较少,所以暂时没有分析。

三、矩阵的压缩存储

(这里的矩阵指二维数组)

1.特殊矩阵

这里介绍了三种特殊矩阵,用一种新的方式把这三大矩阵压缩起来存储,省空间。我觉得这个没必要在新手期去了解,所以跳过了,在这介绍下这三种矩阵:
(1)对称矩阵:很明显,就是有一半都是相同元素,以主对角线做轴对称
(2)三角矩阵:分为上三角矩阵和下三角矩阵,三角中的元素都为常数
(3)对角矩阵:只有在以主对角线为中心的带状区域中有数,其他地方的元素都为0
【这矩阵也太特殊了点,谁正常人创建这样的数组,拿来干啥的我都不知道,是我太初级了么】

2.稀疏矩阵

我理解了一下,意思就是,一个二维数组,大部分都是0,星崩有那么两个位置有数字,就跟扫雷差不多,一百个格子里有十个雷,其他都是空。当然这个0也可以换成一个其他的常量,谁都行。这样我们就可以只表示那些有值的格子。
表示方法:
(1)三元组顺序表:

   row    col    value0        1       7 1        4       41        4       6	   

很明显什么意思,我就不解释了
(2)十字链表:

row    col   valuedown  right

看见了吧,一共有五个值,前三个很好理解,第四个down是下边的,也就是同一列下一行的元素,第五个right是右边那个,也就是下一列同行的元素。这一个链表表示一个元素,根据二维数组的坐标系把每个元素都用链表表示,就组成了一个大十字。


http://www.ppmy.cn/ops/157742.html

相关文章

MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用

目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代,本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…

NLP Word Embeddings

Word representation One-hot形式 在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。 比如下面的例子,即使语言模型已经知道orange juice是常用组合词&#xf…

存储异常导致的Oracle重大生产故障

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

C语言操作符详解

引言 C语言作为一种强大而灵活的编程语言,操作符是其重要组成部分。操作符用于执行各种运算,如算术运算、逻辑运算、比较运算等。深入理解C语言操作符,能帮助开发者编写出高效、准确的代码。 算术操作符 基本算术操作符 - (加法…

快速部署 DeepSeek R1 模型

1. DeepSeek R1 模型的介绍 DeepSeek R1 模型是专为自然语言处理(NLP)和其他复杂任务设计的先进大规模深度学习模型 ,其高效的架构设计是一大亮点,能够更高效地提取特征,减少冗余计算。这意味着在处理海量数据时&…

C#上位机--Net Framework

NET Framework 是由微软开发的一个托管代码编程模型,支持多种编程语言。自首次发布以来经历了多个版本迭代,每个新版本都引入了新的特性和改进。 Net Framework 的核心是公共语言运行库(CLR),后面所说的托管程序就是在CLR中运行 并被管理的,比如垃圾回收…

react使用if判断

1、第一种 function Dade(req:any){console.log(req)if(req.data.id 1){return <span>66666</span>}return <span style{{color:"red"}}>8888</span>}2、使用 {win.map((req,index) > ( <> <Dade data{req}/>{req.id 1 ?…

Word 编辑密码解密教程

如果你遇到 word 不能打开编辑或忘记密码的情况&#xff0c;别担心&#xff0c;这里有最简单的办法。具体步骤如下&#xff1a;在手机或电脑浏览器上输入 文件密码.top 进入密码找回网站&#xff0c;然后点击“立即开始”&#xff0c;上传文件&#xff0c;无需下载软件&#xf…