NO.4數據結構數組和矩陣|一維數組|二維數組|對稱矩陣|三角矩陣|三對角矩陣|稀疏矩陣

![[Pasted image 20250712141812.png]]

數組的儲存

【定義】

數組: 由 n(≥1) 個相同類型的數據元素構成的有限序列, 是線性表的推廣。
一旦被定義, 維數和長度就不可再改變, 一般對其只有元素的存取和修改操作。

一維數組

Arr[a0,…,an?1] Arr[a_{0},\dots,a_{n-1}] Arr[a0?,,an?1?]
計算 ai 的位置: pos(ai) = pos(a0) + i *L (ai 前面有 i 個元素)

二維數組

——可看作元素是一維數組的一維數組。 假設為 n*m 大小。
行優先
![[Pasted image 20250712143114.png]]

列優先
![[Pasted image 20250712143127.png]]

特殊矩陣的壓縮

——多個值相同的元素只分配一個存儲空間, 對零元素不分配空間。

對稱矩陣

aij = aji
![[Pasted image 20250712143241.png]]

若從 a1,1 開始, 則 ai,j 在一維數組中存儲下標

一般存儲下三角矩陣
下三角區域(含主對角線)
第一行:1個元素
第二行:2個元素
第i-1行:i-1個元素
第i行:j-1個元素
故 aij 為第i(i-1)/2+j個元素

i(i-1)/2+j-1, i >= j 下三角區和主對角線
j(j-1)/2+i-1, i < j 上三角區

三角矩陣

——上三角區 or 下三角區全為同一常量 => 會浪費一半的存儲空間。
![[Pasted image 20250712162901.png]]

![[Pasted image 20250712162909.png]]

下三角矩陣元素 aij 和數組下標的關系
n(n+1)/2, i < j 上三角區
i(i-1)/2+j-1, i ≥ j 下三角區和主對角線
![[Pasted image 20250713031706.png]]

上三角矩陣元素 aij 和數組下標的關系

上三角區域 (包含主對角線)
第一行:n個元素
第二行:n-1個元素
第i-1行:n-i+2個元素
第i行:j-i個元素
ai;為第(n+n-i+2)(i-1)/2 + j-i+1=(i-1)(2n-i+2)/2+j-i+1個元素

n(n+1)/2, i > j 下三角區
(i-1)(2n-i+2)/2 + (j-i), i ≤ j 上三角區和主對角線

三對角矩陣

——也稱帶狀矩陣, 對于 ai,j,當|i-j|>1 時, 有 ai,j = 0
![[Pasted image 20250713032036.png]]

除第1行和第i行外,每行都有三個元素,
第i行有j-i+2個元素,
故aij為第(i-2)*3+2+j-i+2=2i+j-2個元素

三對角矩陣的順序存儲
![[Pasted image 20250713032112.png]]

三對角矩陣元素 aij 和數組下標的關系
k = 2i + j -3

稀疏矩陣儲存方式

順序儲存(三元組表示法&偽地址表示法)
鏈式存儲(鄰接表表示法&十字鏈表表示法)
![[Pasted image 20250713032510.png]]

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

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

相關文章

如何把Arduino IDE中ESP32程序bin文件通過樂鑫flsah_download_tool工具軟件下載到ESP32中

目錄前言獲取Arduino IDE中ESP32程序bin文件flsah_download_tool工具軟件下載程序bin文件到ESP32中總結前言 Arduino IDE豐富的驅動庫給ESP32的開發帶來了很多便利&#xff0c;當我們下載程序的時候&#xff0c;直選選擇好ESP32開發板型號和端口號即可下載程序到開發板中&…

2025XYD Summer Camp 7.11 模考

T1TTT 組詢問&#xff0c;每組詢問給定 n,mn,mn,m&#xff0c;求 (nm)?1?∑i1n∑j1mlcm?(i,j) (nm)^{-1}\cdot\sum_{i1}^n\sum_{j1}^m\operatorname{lcm}(i,j) (nm)?1?i1∑n?j1∑m?lcm(i,j) 對 109710^971097 取模。 T≤20000T\le 20000T≤20000&#xff0c;n,m≤107n,m…

uniapp 微信小程序點擊開始倒計時

一、示例 當點擊按鈕時就開始倒計時代碼 <template><view class"sq_box"><button class"button" click"topay">按鈕</button><u-modal v-model"modalShow" :show-cancel-button"true" :content&…

【網絡】Linux 內核優化實戰 - net.netfilter.nf_conntrack_tcp_timeout_established

目錄一、核心概念1. **TCP 連接狀態跟蹤**2. **參數作用**二、默認值與典型場景1. **默認值**2. **典型場景**三、如何調整該參數1. **查看當前值**2. **臨時修改&#xff08;重啟后失效&#xff09;**3. **永久修改**四、相關參數與配合優化1. **其他 TCP 狀態超時參數**2. **…

鴻蒙app 開發中的Record<string,string>的用法和含義

Record<string, string> 在鴻蒙 App 開發中的用法在 TypeScript 中&#xff0c;Record<string, string> 是一個映射類型&#xff08;Mapped Type&#xff09;&#xff0c;用于描述一個對象的結構。在鴻蒙 App 開發中&#xff0c;它常用于定義接口、組件屬性或函數參…

Webpack、Vite配置技巧與CI/CD流程搭建全解析

Webpack、Vite配置技巧與CI/CD流程搭建全解析 在現代前端開發中&#xff0c;構建工具配置和自動化部署流程是提升開發效率和項目質量的關鍵環節。本文將深入探討Webpack和Vite這兩大構建工具的核心配置技巧&#xff0c;并詳細介紹CI/CD流程的搭建方法。 一、Webpack核心配置技巧…

輸入npm install后發生了什么

一、準備階段&#xff1a;配置與環境檢查讀取配置優先級npm install 首先加載多層級的配置&#xff08;優先級從高到低&#xff09;4&#xff1a;項目級 .npmrc用戶級 .npmrc&#xff08;如 ~/.npmrc&#xff09;全局 npmrcnpm 內置默認配置可通過 npm config ls -l 查看所有配…

SpringBoot集成Redis、SpringCache

1 Redis介紹 1.1 Redis作為緩存 由于Redis的存取效率非常高,在開發實踐中,通常會將一些數據從關系型數據庫(例如MySQL)中讀取出來,并寫入到Redis中,后續當需要訪問相關數據時,將優先從Redis中讀取所需的數據,以此,可以提高數據的讀取效率,并且對一定程度的保護關系型…

靜態路由綜合配置實驗報告

一、實驗拓撲二、實驗需求1.除了R5的環回地址固定5.5.5.0/24&#xff0c;其他網段基于192.168.1.0/24進行合理劃分&#xff1b;2.R1-R4每個路由器存在兩個環回接口&#xff0c;模擬PC&#xff0c;地址也在192.168.1.0/24網絡內&#xff1b;3.R1-R4不能直接編寫到達5.5.5.0/24的…

【一起來學AI大模型】PyTorch DataLoader 實戰指南

DataLoader 是 PyTorch 中處理數據的核心組件&#xff0c;它提供了高效的數據加載、批處理和并行處理功能。下面是一個全面的 DataLoader 實戰指南&#xff0c;包含代碼示例和最佳實踐。基礎用法&#xff1a;簡單數據加載import torch from torch.utils.data import Dataset, D…

SpringBoot單元測試類拿不到bean報空指針異常

原代碼package com.atguigu.gulimall.product;import com.aliyun.oss.OSSClient; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; impo…

持續集成 簡介環境搭建

1. 持續集成簡介 1.1 持續集成的作用 隨著互聯網的蓬勃發展,軟件生命周期模型也經歷了幾個比較大的階段,從最初的瀑布模型,到 V 模型,再到現在的敏捷或者 devops,不論哪個階段,項目從立項到交付幾乎都離不開以下幾個過程,開發、構建、測試和發布,而且一直都在致力于又…

關于 java:11. 項目結構、Maven、Gradle 構建系統

一、Java 項目目錄結構標準1.1 Java 項目標準目錄結構總覽標準 Java 項目目錄結構&#xff08;以 Maven / Gradle 通用結構為基礎&#xff09;&#xff1a;project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主業務邏輯代碼&#xff08;核心…

大數據的安全挑戰與應對

在大數據時代&#xff0c;大數據安全問題已成為開發者最為關注的核心議題之一。至少五年來&#xff0c;大數據已融入各類企業的運營體系&#xff0c;而采用先進數據分析解決方案的組織數量仍在持續增長。本文將明確當前市場中最關鍵的大數據安全問題與威脅&#xff0c;概述企業…

PostgreSQL ERROR: out of shared memory處理方式

系統允許的總鎖數 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);當鎖大于…

Django 模型(Model)

1. 模型簡介 ORM 簡介 MVC 框架中一個重要的部分就是 ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫。即直接面向對象操作數據,無需考慮 sql 語句。 ORM 是“對象-關系-映射”的簡稱,主要任務是:…

深入解析Hadoop RPC:技術細節與推廣應用

Hadoop RPC框架概述在分布式系統的核心架構中&#xff0c;遠程過程調用&#xff08;RPC&#xff09;機制如同神經網絡般連接著各個計算節點。Hadoop作為大數據處理的基石&#xff0c;其自主研發的RPC框架不僅支撐著內部組件的協同運作&#xff0c;更以獨特的工程哲學詮釋了分布…

為什么玩游戲用UDP,看網頁用TCP?

故事場景&#xff1a;兩種不同的遠程溝通方式假設你需要和遠方的朋友溝通一件重要的事情。方式一&#xff1a;TCP — 打一個重要的電話打電話是一種非常嚴謹、可靠的溝通方式。? 1. 建立連接 (三次握手):? 你拿起電話&#xff0c;撥號&#xff08;SYN&#xff09;。? 朋友那…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 這篇文章可以從一個帶有紋理的幾何物體出發&#xff0c;將其身上的紋理自動提取并映射到任意的幾何拓撲結構上&#xff08;見下圖紅線左側&#xff09;&#xff1b;或者從一個白模幾何對象出發&#x…