当前位置: 首页 > news >正文

数据结构概述和稀疏数组

  • 数据结构和算法内容介绍

1)算法是程序的灵魂,优秀的程序可以在海量数据计算时,仍然保持高速计算

  • 数据结构和算法概述

1)程序 = 数据结构+算法

2)学好数据结构可以编写出更加漂亮,更加有效率的代码

3)数据结构是算法的基础

  • 数据结构包括:

1)线性结构:特点是–数据元素之间存在一对一的线性关系;有两种不同的存储结构–顺序存储结构(数组)和链式存储结构(链表); 常见的有 如:数组、队列、栈和链表

顺序表中的存储元素(地址)是连续的

链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。

2)非线性结构:二维数组、多维数组、广义表、树结构、图结构

  • 稀疏sparsearray数组

基本介绍

当一个数组中大部分元素是0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组

稀疏数组的处理方法是:

1)记录数组一共有几行几列,有多少个不同的值

2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

  • 稀疏数组和原始数组互相转换代码:
package com.xqh.parsearray;public class SparseArray {public static void main(String[] args) {// 创建一个原始的二维数组 11*11// 0:表示没有旗子,1表示黑子,2表示蓝子int chessArr1[][] = new int [11][11];chessArr1[1][2] = 1 ; chessArr1[2][3] = 2 ;//输出原始的二维数组System.out.println("原始的二维数组:");for(int[]row:chessArr1) {for(int data : row) {System.out.printf("%d\t",data);}System.out.println();}//将二维数组转稀疏数组//1.先遍历二维数组  得到非0数据的个数int sum = 0;for(int i = 0;i<11;i++) {for(int j = 0;j<11;j++) {if(chessArr1[i][j] != 0) {sum++;}}}System.out.println("sum="+sum);//2.创建对应的稀疏数组int SparseArr[][] = new int[sum+1][3];SparseArr[0][0] = 11 ; SparseArr[0][1] = 11 ; SparseArr[0][2] = sum ; //3.给稀疏数组赋值//从二维数组中遍历出非0数据,并存放到稀疏数组中int count = 0 ;  // 用于记录第几个非0数据for(int i = 0 ; i<11;i++) {for(int j =0 ; j<11;j++) {if(chessArr1[i][j] != 0) {count++;SparseArr[count][0] = i;SparseArr[count][1] = j ; SparseArr[count][2] = chessArr1[i][j];}}}//输出稀疏数组System.out.println("得到的稀疏数组:");for(int[]row:SparseArr) {for(int data : row) {System.out.printf("%d\t",data);}System.out.println();}//稀疏数组转换为原数组//1.先读取稀疏数组第一行,根据第一行数据(第一行的数据就是原始二维数组的行和列),创建原始的二维数组int chessArr2[][] = new int [SparseArr[0][0]][SparseArr[0][1]];//2.在读取稀疏数组后几行的数据(从第二行开始),并赋给原始的二维数组即可for(int i = 1;i<SparseArr.length;i++) {chessArr2[SparseArr[i][0]][SparseArr[i][1]] = SparseArr[i][2];}//3.输出原二维数组System.out.println();System.out.println("得到的原二维数组:");for(int[]row:chessArr2) {for(int data:row) {System.out.printf("%d\t",data);}System.out.println();}}}

相关文章:

数据结构概述和稀疏数组

数据结构和算法内容介绍 1&#xff09;算法是程序的灵魂&#xff0c;优秀的程序可以在海量数据计算时&#xff0c;仍然保持高速计算 数据结构和算法概述 1&#xff09;程序 数据结构算法 2&#xff09;学好数据结构可以编写出更加漂亮&#xff0c;更加有效率的代码 3&…...

宝塔搭建实战人才求职管理系统adminm前端vue源码(三)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享骑士cms后台admin前端vue在本地运行打包、宝塔发布部署的方式&#xff0c;本期给大家分享&#xff0c;后台adminm移动端后台vue前端怎么在本地运行&#xff0c;打包&#xff0c;实现线上功能更新…...

服务器是干什么用的?

首先&#xff0c;什么是服务器&#xff1f;服务器是提供计算服务器和网络服务的设备。服务器和计算机由CPU、硬盘、内存、系统总线等组成。比如我们访问一个网站&#xff0c;点击这个网站会发出访问请求&#xff0c;服务器会响应服务请求&#xff0c;进行相应的处理&#xff0c…...

C++ 之结构体与共用体

文章目录参考描述结构体使用&#xff08;基本&#xff09;声明初始化先创建后初始化C 11 列表初始化使用&#xff08;进阶&#xff09;结构数组声明&#xff08;拓展&#xff09;声明及创建声明及初始化匿名结构体细节外部声明与内部声明成员赋值共用体存储空间匿名共用体同化尾…...

Java基础知识汇总(良心总结)

1. 前言 本文章是对Java基础知识进行了汇总&#xff0c;方便大家学习。 申明&#xff1a;文章的内容均来自黑马程序员&#xff0c;博主只是将其搬到了CSDN上以共享给大家学习 2. 目录 Day01 Java学习笔记之《开章》 Day02 Java学习笔记之《运算符》 Day03 Java学习笔记之《流程…...

InnoDB之Undo log格式

1. 前言 InnoDB有两大日志模块&#xff0c;分别是redo log和undo log。为了避免磁盘随机写&#xff0c;InnoDB设计了redo log&#xff0c;数据写入时只写缓冲页和redo log&#xff0c;脏页由后台线程异步刷盘&#xff0c;哪怕系统崩溃也能根据redo log恢复数据。但是我们漏了一…...

一问学习StreamAPI终端操作

Java Stream管道流是用于简化集合类元素处理的java API。 在使用的过程中分为三个阶段&#xff1a; 将集合、数组、或行文本文件转换为java Stream管道流管道流式数据处理操作&#xff0c;处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。管道流结果…...

在屎山代码中快速找到想要的代码法-锁表法(C#)

由于本人水平有限&#xff0c;文中有写得不对的地方请指正&#xff0c;本文的方法有些投机取巧&#xff0c;实在是没招的情况下可以酌情使用&#xff0c;如有侵权&#xff0c;请联系删除。 前几天接到一个需求&#xff0c;要在医嘱签署时对检验项目进行分方操作&#xff0c;分…...

网页设计html期末大作业

网页设计html期末大作业网页设计期末大作业-自制网站大一期末作业&#xff0c;外卖网站设计网页设计期末大作业-精美商城-首页框架网页设计期末大作业-自制网站 有导航栏&#xff0c;轮播图&#xff0c;按钮均可点进去&#xff0c;如下图所示 点我下载资源》》》》 大一期末…...

实战打靶集锦-006-Stapler

**写在前面&#xff1a;**记录博主的一次打靶经历。 目录1. 主机发现2. 端口发现3. 服务枚举4. 服务探查4.1 FTP探查4.1.1 匿名登录4.1.2 Elly用户4.1.3 John用户4.1.4 EXP搜索4.2 dnsmasq探查4.2.1 基础信息获取4.2.2 EXP搜索4.3 WEB应用探查4.3.1 浏览器访问4.3.2 目录扫描4.…...

致远OAA6版安装

准备工作&#xff0c;操作系统winserver2019&#xff0c;sqlserver2019。致远OA安装包0.SeeyonInstall.zip相关下载&#xff1a;winserver2019下载地址&#xff1a;cn_windows_server_2019_updated_july_2020_x64_dvd_2c9b67da.iso magnet:?xturn:btih:22A410DEA1B0886354A34D…...

python实用脚本(六)—— pandas库的使用(生成、读取表格)

本期主题&#xff1a; python的pandas使用 往期链接&#xff1a; python实用脚本&#xff08;一&#xff09;—— 批量修改目标文件夹下的文件名python实用脚本&#xff08;二&#xff09;—— 使用xlrd读取excelpython实用脚本&#xff08;三&#xff09;—— 通过有道智云AP…...

字符集、ASCII、GBK、UTF-8、Unicode、乱码、字符编码、解码问题等

编码解码一、背景二、字符的相关概念三、字符集3.1 ASCII[ˈski]3.1.1 ASCII的编码方式3.1.2 EASCII3.2 GBK3.2.1 GB 2312-803.2.2 GBK的制订3.2.3 GBK的实现方式3.3 Unicode&#xff08;统一码、万国码&#xff09;3.3.1 Unicode的出现背景3.3.2 Unicode的编写方式3.3.3 Unico…...

Java 布隆过滤器

你在么&#xff1f;在&#xff01;一定在么&#xff1f;不在&#xff01;一定不在么&#xff1f; 你想要100%的准去性&#xff0c;还是99%的准确性附带较高的速度和较小的资源消耗。 任何算法&#xff0c;任何经营收到的背后&#xff0c;都是时间效益 资源消耗 准确性的平衡&am…...

vscode连接服务器(腾讯云)

文章目录1. vscode远程总是报错2. vscode能连上腾讯云但密码不对或者登录后不能打开文件或文件夹1. vscode远程总是报错 报错如图所示 Could not establish connection to *** 过程试图写入的管道不存在。 在百度、csdn找了好久都是说删掉.ssh文件下的某个文件但我压根没有&a…...

IOS崩溃文件符号化实践

1.背景与项目难点 1.1 背景 由于公司之前使用的友盟要收费&#xff0c;filebase服务由谷歌提供&#xff0c;存在数据合规风险。需要实现稳定性分析功能&#xff0c;通过支持app崩溃信息实时采集、实时上报、实时自动解析并定位出代码问题&#xff0c;帮助研发同学及时定位崩溃…...

设计模式之适配器模式与桥接模式详解和应用

目录1 适配器模式1.1 定义1.2 应用场景1.3 适配器角色1.4 类适配器1.5 对象适配器1.5 接口适配器1.6 实战1.7 源码1.8 适配器与装饰器的对比1.9 适配器模式的优缺点1.10 总结2 桥接模式2.1 原理解析2.2 角色2.3 通用写法2.4 应用场景2.5 业务场景中的运用2.6 源码2.7 桥接模式优…...

Winform控件开发(14)——NotifyIcon(史上最全)

前言: 先看个气泡提示框的效果: 代码如下: 在一个button中注册click事件,当我们点击button1时,就能显示气泡 private void button1_Click(object sender, EventArgs e){notifyIcon1.Visible = true;notifyIcon1...

Verilog 学习第四节(从计数器到可控制线性序列机——LED实验进化六部曲)

从计数器到可控制线性序列机——LED实验进化六部曲一&#xff1a;让LED灯按照亮0.25s&#xff0c;灭0.75s的状态循环亮灭二&#xff1a;让LED灯按照亮0.25s&#xff0c;灭0.5s&#xff0c;亮0.75s&#xff0c;灭1s的状态循环亮灭三&#xff1a;让LED灯按照指定的亮灭模式亮灭&a…...

操作SSH无密登录配置

例如小编有三台服务器需要相互访问&#xff0c;就需要配置三台&#xff0c;这三台分别是hadoop102,hadoop103 , hadoop1041.打开三个服务器&#xff0c;分别生成hadoop102&#xff0c;hadoop103 , hadoop104的公钥和私钥输入命令&#xff0c;然后一直回车&#xff0c;这时候什么…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

职坐标物联网全栈开发全流程解析

物联网全栈开发涵盖从物理设备到上层应用的完整技术链路&#xff0c;其核心流程可归纳为四大模块&#xff1a;感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性&#xff0c;例如传感器选型需平衡精度与…...

Linux系统:进程间通信-匿名与命名管道

本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道&#xff08;Pipe&#xff09;是一种进程间通信&#xff08;IPC, Inter-Process Communication&#xff09;机制&#xff0c;用于在不…...