數組的定義、順序存儲及特殊矩陣的存儲

目錄

一、數組的定義

1.1概念

1.2抽象數據類型定義

二、數組的順序存儲

2.1一維數組元素的存儲位置

2.2二維數組元素的存儲位置

2.3三維數組元素的存儲位置

三、特殊矩陣的壓縮存儲

3.1相關概念

3.2對稱矩陣

3.3三角矩陣

3.4對角矩陣(帶狀矩陣)

3.5稀疏矩陣


一、數組的定義

1.1概念

數組是按一定格式排列起來的具有相同類型的數據元素的集合

·聲明格式: 數據類型 變量名稱[長度];

例:int num[5]={0,1,2,3,4};

1.2抽象數據類型定義

ADT Array{

數據對象:j(i)=0,... b(i)-1, i=1,2,.....,n

????????????????? D={a(j1j2....j(n)) | a(j1j2.....j(n)) ∈ElemSet}

數據關系:R1={<a(j1...j(i)...j(n),a(j1...j(i+1)...j(n))> | 0<=j(k)<=b(k)-1,1<=k<=n,且k≠i,0<=j(i)<=b(k)-2, a(j1...j(i)...j(n)), a(j1...j(i+1)...j(n) ∈D,i=2,...,n}

基本操作:

①InitArray(&A,n,bound1,...boundn)?? //構造數組A

②DestroyArray(&A)?? //銷毀數組A

③Value(A,&e,index1,...,indexn)?? //取數組元素值

④Assign(A,&e,index1,...indexn)? //給數組元素賦值

}ADT Array

二、數組的順序存儲

2.1一維數組元素的存儲位置

LOC(i)=LOC(0)=a,i=0;

LOC(i)=LOC(i-1)+L=a+i*L,i>0

例:每個元素占4字節,假設a[0]存儲在2000單元,則a[3]地址為:2000+3*4=2012單元

?2.2二維數組元素的存儲位置

我們先來討論一下二維數組的存儲方式:

①以行序為主序

②以列序為主序

二維數組元素的存儲位置:(行優先的順序存儲)

a[i][j]的存儲位置:LOC(i,j)=LOC(0,0)+(n*i+j)*L

(n*i+j)表示在a[i][j]前面所有元素個數

例:

2.3三維數組元素的存儲位置

我們一樣先討論三位數組的存儲方式:

三位數組元素的存儲位置

三、特殊矩陣的壓縮存儲

3.1相關概念

①什么是壓縮存儲:

為多個相同的非零元素只分配一個存儲空間;對零元素不分配空間。

②什么樣的矩陣能夠壓縮:

對稱矩陣、對角矩陣、三角矩陣、稀疏矩陣

③什么叫稀疏矩陣:

矩陣中非零元素的個數較少(一般少于 5%)

3.2對稱矩陣

①特點:a(ij)=a(ji)

②存儲方法:只存儲下(或者上)三角(包括主對角線)的數據元素,共占用n(n+1)/2個元素空間。

③存儲結構:可以以行序為主序將元素存放在一個一維數組sa[n(n+1)/2]中

例:以行序為主序存儲下三角

k表示元素a(ij)前面有幾個元素個數

k=1+2+3+4+...+(i-1)+(j-1) (i-1表示a(ij)前面有i-1行,j-1表示在a(ij)本行前面有幾個元素)

以a(n1)為例:k=1+2+3+...+(n-1)+(1-1)=n(n-1)/2

3.3三角矩陣

①特點:對角線以下(或者以上)的數據元素(不包括對角線)全部為常數c

②存儲方法:重復元素c共享一個元素存儲空間,共占用n(n+1)/2+1個元素(1表示常數c的存儲空間)

③存儲結構:將元素存放在一個一維數組sa[n(n+1)/2+1]中

·對于上三角矩陣:

·對于下三角矩陣:

k一樣表示a(ij)元素前面的元素個數

3.4對角矩陣(帶狀矩陣)

①特點:在n×n方陣中所有非零元素都集中在以主對角線為中心的帶狀區域中,區域外的值全為0

常見的有三對角矩陣、五對角矩陣、七對角矩陣等

②存儲方法:以對角線的順序存儲

3.5稀疏矩陣

①特點:非零元較零元少,且分布沒有規律。

②存儲方法:三元組法、十字鏈表

③存儲結構:順序存儲、鏈式存儲

·三元組順序表法

(i,j,a(ij)) (行數,列數,元素值)+(總行數,總列數,非零元素總個數)

三元組法的優點:便于進行依行順序處理的矩陣運算;缺點:不能隨機存取。

改進:稀疏矩陣的鏈式存儲結構——十字鏈表

優點:能夠靈活地插入因運算而產生的新的非零元素,刪除因運算而產生的新的零元素

·十字鏈表

矩陣的每一個非零元素用一個結點表示,該結點除了(row,col,value)以外,還要有right、down兩個域。(right連接同一行中的下一個非零元素,down連接同一列中的下一個非零元素)

結構示意圖:

例:

引入頭指針:指向行或列中的第一個非零元素

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18362.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習300問】102、什么是混淆矩陣?

一、混淆矩陣的定義 混淆矩陣是一種用于評估分類模型性能的評估指標。當模型對數據進行預測并將數據分配到預定義的類別時&#xff0c;混淆矩陣提供了一種直觀的方式來總結這些預測與數據實際類別之間的對應關系。具體來說&#xff0c;它是一個表格。 二、分類模型性能評估一級…

私域用戶畫像分析

為什么做私域要分析用戶畫像&#xff1f; 1、更好地了解用戶需求&#xff1a;通過分析用戶畫像&#xff0c;可以深入了解用戶的需求、偏好、行為等特征&#xff0c;從而更好地滿足他們的需求。 2、個性化營銷&#xff1a;根據用戶畫像&#xff0c;可以為用戶提供個性化的營銷…

js setTimeout、setInterval、promise、async await執行順序梳理

基礎知識 async: 關鍵字用于標記一個函數為異步函數&#xff0c;該函數中有一個或多個promise對象&#xff0c;需要等待執行完成后才會繼續執行。 await:關鍵字&#xff0c;用于等待一個promise對象執行完&#xff0c;并返回其中的值&#xff0c;只能在async函數內部使用。可…

云服務器平臺AutoDL--基本介紹與使用感受

因為課程作業需要復現DreamBooth&#xff0c;找了幾個教程之后&#xff0c;發現了AutoDL這個好東西&#xff0c;蕪湖~ 相關概念 以下回答來自于ChatGPT。 云計算平臺&#xff1a;云服務器平臺是提供按需計算資源和服務的在線平臺&#xff0c;通常包括存儲、處理能力、數據庫、…

搜維爾科技:使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目

使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目 搜維爾科技&#xff1a;使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目

【Python設計模式06】代理模式

代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過創建代理對象來控制對另一個對象的訪問。代理模式可以用于延遲實例化、控制訪問權限、記錄日志等。代理模式的核心思想是為其他對象提供一種代理&#xff0c;以控制對這個對象的訪問。 代…

System32文件夾千萬不能刪除,看完這篇你就知道為什么了

序言 C:\Windows\System32目錄是Windows操作系統的關鍵部分,重要的系統文件存儲在該目錄中。網上的一些惡作劇者可能會告訴你刪除它,但你不應該嘗試去操作,如果你嘗試的話,我們會告訴你會發生什么。 什么是System32文件夾 位于C:\Windows\System32的System32文件夾是所有…

Python深度學習:【模型系列】Transformer面試靈魂20問

1. transformer簡介 Transformer模型是一種基于自注意力機制的神經網絡架構,主要用于處理序列數據,如自然語言處理任務。它由Google在2017年提出,并在“Attention is All You Need”這篇論文中首次公開。Transformer模型的核心思想是利用自注意力機制來捕捉序列中的依賴關系…

MySQL 的表約束詳解

在數據庫設計中&#xff0c;約束&#xff08;Constraints&#xff09;是確保數據完整性和一致性的關鍵工具。MySQL 作為流行的關系型數據庫管理系統&#xff0c;提供了多種約束類型來維護數據的準確性和可靠性。本文將詳細探討 MySQL 的各種表約束&#xff0c;包括它們的定義、…

【代碼隨想錄】面試常考類型之動態規劃01背包

前言 更詳細的在大佬的代碼隨想錄 (programmercarl.com) 本系列僅是簡潔版筆記&#xff0c;為了之后方便觀看 不同的二叉搜索樹 96. 不同的二叉搜索樹 - 力扣&#xff08;LeetCode&#xff09; 通過舉例子發現重疊子問題 代碼很簡單&#xff0c;主要是思路問題&#xff0…

Windows內核函數 - 創建關閉注冊表

在驅動程序的開發中&#xff0c;經常會用到對注冊表的操作。與Win32的API不同&#xff0c;DDK提供另外一套對注冊表操作的相關函數。首先明確一下注冊表里的幾個概念&#xff0c;避免在后面混淆。 圖1 注冊表概念 有5個概念需要重申一下&#xff1a; * 注冊表項&#xff1a; 注…

008、字符串_內部編碼

字符串類型的內部編碼有3種&#xff1a; int&#xff1a;8個字節的長整型。 embstr&#xff1a;小于等于39個字節的字符串。 raw&#xff1a;大于39個字節的字符串。 Redis會根據當前值的類型和長度決定使用哪種內部編碼實現。 整數類型示例如下&#xff1a; 127.0.0.1:6379&…

使用 MyBatis-Plus 的 IService 進行模糊查詢操作

使用 MyBatis-Plus 的 IService 進行模糊查詢操作 一、前言1. 普通模糊查詢&#xff08;like&#xff09;2. 左模糊查詢&#xff08;likeLeft&#xff09;3. 右模糊查詢&#xff08;likeRight&#xff09;4. 不匹配指定字符串的模糊查詢&#xff08;notLike&#xff09; 一、前…

unity接入live2d

在bilibili上找到一個教程&#xff0c;首先注意一點&#xff0c;你直接導入那個sdk&#xff0c;并且打開示例&#xff0c;顯示的模型是有問題的&#xff0c;你需要調整模型上腳本的一個枚舉值&#xff0c;調整它的渲染順序是front z to我看教程時候&#xff0c;很多老師都沒有提…

常用匯編指令

&#xff08;arg&#xff09;argument&#xff1a;自變量&#xff0c;變元 &#xff08;reg&#xff09;register&#xff1a;寄存器 &#xff08;seg&#xff09;segment&#xff1a;段寄存器 &#xff08;mem&#xff09;memory&#xff1a;存儲器&#xff08;內存單元&am…

什么是 BIO、NIO、AIO?

BIO、NIO、AIO 都是 Java 的 IO 模型 BIO (Blocking IO) 是傳統的 IO 模型&#xff0c;它在讀寫數據時會阻塞線程&#xff0c;直到數據讀寫完成&#xff0c;適用于并發不高的場景。 NIO (Non-blocking IO) 是 Java 的新 IO 模型&#xff0c;它在讀寫數據時不會阻塞線程&#…

Flutter 中的 AnimatedPositionedDirectional 小部件:全面指南

Flutter 中的 AnimatedPositionedDirectional 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;AnimatedPositionedDirectional 是一個用于創建具有方向感知的動畫定位效果的組件。它允許開發者在動畫過程中動態地改變子組件的位置&#xff0c;并且可以指定動畫的方向&a…

Android Compose 九:interactionSource 的使用

先上官方文檔 InteractionSource InteractionSource represents a stream of Interactions corresponding to events emitted by a component. These Interactions can be used to change how components appear in different states, such as when a component is pressed or…

數據庫技術都涵蓋那些內容

數據庫技術涵蓋了關系型數據庫&#xff08;RDBMS&#xff09;、非關系型數據庫&#xff08;NoSQL&#xff09;以及數據庫管理系統&#xff08;DBMS&#xff09;的其他方面。以下是一些我熟悉的數據庫技術&#xff1a; 關系型數據庫&#xff08;RDBMS&#xff09; MySQL&#…

溫故而知新-Spring篇【面試復習】

溫故而知新-Spring篇【面試復習】 前言版權推薦溫故而知新-Spring篇IOCAOP循環依賴springboot如果要對屬性文件中的賬號密碼加密如何實現&#xff1f;SpringBoot的優點Spring Boot 的核心注解是哪個&#xff1f;它主要由哪幾個注解組成的&#xff1f; 最后 前言 2023-7-31 15:…