线性表,但是是Java中数组实用使用!

news2024/10/5 16:31:37

线性表定义:
由n (n≥0)个数据特性相同的元素构成的有限序列称为线性表,(n=0)的时候被称为空表。

线性表的顺序表示

线性表的顺序存储又被称为顺序表

  • 优点

    • 无需为表示表中元素之间的逻辑关系而增加额外的存储空间
    • 可以随意读取任意位置的元素
  • 缺点

    • 插入或者删除,需要移动大量数据元素

    • 线性表长度变化较大时,难以确定存储空间的容量

    • 造成存储空间的碎片

java中用数组表示的:

double[] a = new double[N];

声明初始化数组:

int[] a = { 1, 1, 2, 3, 5, 8 };

数组一经创建,它的大小就是固定的。程序能够通过 a.length 获取数组 a[] 的长度,而它的最后一个元素总是 a[a.length – 1]。

典型的数组处理代码:

找出数组中最大的元素

double max = a[0];
for (int i = 1; i < a.length; i++)
	if (a[i] > max) 
        max = a[i];

计算数组元素的平均值

int N = a.length;
double sum = 0.0;
for (int i = 0; i < N; i++)
	sum += a[i];
double average = sum / N;

复制数组

int N = a.length;
double[] b = new double[N];
for (int i = 0; i < N; i++)
	b[i] = a[i];

颠倒数组元素的顺序

int N = a.length;
for (int i = 0; i < N/2; i++)
{
	double temp = a[i];
	a[i] = a[N-1-i];
	a[N-i-1] = temp;
}

矩阵相乘(方阵) a[] [ ] * b[] [] = c[] []

int N = a.length;
double[][] c = new double[N][N];
for (int i = 0; i < N; i++)
	for (int j = 0; j < N; j++)
	{ // 计算行 i 和列 j 的点乘
		for (int k = 0; k < N; k++)
			c[i][j] += a[i][k]*b[k][j];
	}

二维数组

在 Java 中二维数组就是一维数组的数组。大多数情况下(根据合适的参数 M 和 N)我们都会使用 M×N,即 M 行长度为 N 的数 组的二维数组(也可以称数组含有 N 列)。

二维数组 a[][] 的 第 i 行第 j 列的元素可以写作 a [i] [j]

创建时:double[] [] a = new double [M] [N]

其根本是等价于:

double[][] a;
a = new double[M][N];
for (int i = 0; i < M; i++)
	for (int j = 0; j < N; j++)
		a[i][j] = 0.0;

Java 会将数值类型的数组元素初始化为 0,将布尔型的数组元素初始化为 false。但是如果想要初始化为其他值,我们就需要嵌套的 for 循环设置自己想要的值。

稀疏数组 (sparsearray)

比如像五子棋棋盘,用二维数组存棋盘上的点。假设0为空,1是黑棋,2是白棋;那么前面会有很多默认值0,这样子记录了很多没价值的数据。这个时候就是稀疏数组的用武之地。

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

稀疏数组的处理方法是:

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

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

具体实施:

在这里插入图片描述

​ 固定是3列。第一行是共有几行几列,有多少个不同的值 ,后面则是将每个特殊的元素所在的行列和值记录下来。

二维数组 转 稀疏数组的思路

1.遍历原始的二维数组,得到有效数据的个数sum

// 前面已经创建了原始二维数组,且用0表示没有棋子,1表示黑棋 2表示白棋

int sum = 0;
for (int i = 0; i < 11; i++) {
	for (int j = 0; j < 11; j++) {
		if (chessArr1[i][j] != 0) {
			sum++;
		}
	}
}

2.根据sum就可以创建稀疏数组sparseArr int [sum+1] [3]

int sparseArr[][] = new int[sum + 1][3];

3.将二维数组的有效数据数据存入到稀疏数组

// 给稀疏数组赋值
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum;
// 遍历二维数组,将非 0 的值存放到 sparseArr 中
int count = 0;  //count 用于记录是第几个非 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; //row列记录行
			sparseArr[count][1] = j; //col列记录列
			sparseArr[count][2] = chessArr1[i][j]; //value列记录值
		}
	}
}

稀疏数组转原始的二维数组的思路

1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的 chesArr2=int[11] [11]

int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];

2.再读取稀疏数组后几行的数据,并赋给 原始的二维数组 即可

for(int i = 1; i < sparseArr.length; i++) {
    // 二维数组【行=稀疏数组[i][0]行的值】【列=稀疏数组[i][1]列的值】
    //= 值(稀疏数组第三列的值)
	chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1233692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你通过CODESYS V3进行PLC编程(一)

教程背景 宏集MC系列模块化控制器是基于Raspberry Pi的高性能4核控制器&#xff0c;运动控制循环时间最快可达500微秒&#xff0c;实现了计算能力和成本之间的最佳平衡&#xff0c;适用于多轴运动控制和CNC控制。 教程目的 本系列教程将使用宏集MC系列控制器&#xff0c;详细…

极空间z2pro bitwarden+frp+nginx教程

z2pro Bitwarden Frp Nginx教程 本案例仅供记录 使用时按照自己的IP和端口进行 灵活变通 本案例中使用的设备&#xff1a; NAS&#xff1a;z2pro域名&#xff1a;est.xyz云服务器&#xff1a;腾讯云&#xff08;公网ip&#xff1a;43.43.43.143&#xff09; 一&#xff0c;Va…

Unity - 实现模型动态伸长缩短,贴图不变形(材质球参数篇)

思路为修改模型材质球的Tiling参数&#xff0c;根据与自身localScale的值得到合适的比例&#xff0c;再修改Tiling值 var mat target.transform.GetComponent<Renderer>().material; var oriValue mat.mainTextureScale;//沿着Y轴伸缩 oriValue.y 1 * target.transfo…

动手学深度学习(二)---线性回归

文章目录 1.线性回归从0实现2.线性回归简洁实现【相关方法】 1.线性回归从0实现 从0开始实现整个方法&#xff0c;包括数据流水线、模型、损失函数和小批量随机梯度下降优化器 &#xff08;1&#xff09;导入需要的包 % matplotlib inline import random import torch from d…

3分钟看完NVIDIA GPU架构及演进

近期随着 AI 市场的爆发式增长&#xff0c;作为 AI 背后技术的核心之一 GPU&#xff08;图形处理器&#xff09;的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要&#xff0c;特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多&#xff0c;主要就是 NVIDIA、AM…

《研发效能 100 问》首发,多位专家解读「研效提升」的破局之道?

为了可以帮助更多研发管理者和研发效能负责人&#xff0c;了解构建研发效能体系应从何做起&#xff0c;以及在构建过程中需要解决哪些疑难问题&#xff0c;有哪些最佳实践可以借鉴。2023 年 7 月&#xff0c;思码逸发起&#xff0c;由行业知名研发效能专家张乐老师担任出品人&a…

【Skynet 入门实战练习】开发环境搭建 | 运行第一个项目 | debug console 简单使用

文章目录 写在前面开发环境搭建skynet配置文件项目&#xff0c;启动&#xff01; debug console 写在前面 本系列【Skynet 入门实战练习】所有源码同步&#xff1a;https://gitee.com/Cauchy_AQ/skynet_practice 开发环境搭建 skynet skynet 框架地址&#xff1a;https://g…

第7章-使用统计方法进行变量有效性测试-7.4.1-简单线性回归

目录 基本概念 变量之间的关系 相关分析 回归分析 相关分析和回归分析的关系 一元线性回归模型 总体回归函数 样本回归函数 线性回归模型的假定 普通最小二乘法&#xff08;Ordinary Least Squares&#xff0c;OLS&#xff09; 拟合优度指标 回归系数估计量的性质 …

主播-产品痛点话术

—、用户体验差我们的产品在用户体验方面存在一些问题。首先&#xff0c;产品的操作流程不够顺畅&#xff0c;导致用户在使用过程中经常遇到困扰。另外&#xff0c;我们的产品界面设计不够美观&#xff0c;无法给用户带来愉悦的使用体验。针对这些问题&#xff0c;我们将对产品…

2015-2020年全国地区生产总值及一二三产构成数据总览,shp/excel格式

今天我们来整理了2015-2020全国地区生产总值及一二三产构成数据&#xff0c;数据格式为shpexcel格式&#xff0c;数据精度可达各区县。 另外&#xff0c;需要说明的是&#xff1a;由于统计年鉴指标调整&#xff0c;每一年的数据并非字段相同&#xff0c;字段详情请参考已下载数…

KT142C语音芯片客户反馈电脑端的配置文件,打开都正常,但是拷贝到KT142C内部就乱码

KT142C语音芯片客户反馈电脑端的配置文件&#xff0c;打开都正常&#xff0c;但是拷贝到KT142C内部就乱码 首先解释一下原理&#xff0c;KT142C内置的330Kbyte空间可供用户下载&#xff0c;实际上拿出程序部分的空间 作为声音存储介质的&#xff0c;也就是说&#xff0c;代码空…

SDWAN厂家排名

随着网络技术的不断发展&#xff0c;SDWAN&#xff08;软件定义广域网&#xff09;作为一种新兴的网络架构&#xff0c;正在受到越来 越多企业的关注和采用。选择一家可靠的SDWAN厂家成为企业成功部署和管理SDWAN的关键。本文将从技术实力、客户口碑以及市场占有率三个方面&…

数据仓库模式之详解 Inmon 和 Kimball

目录 一、前言 二、企业信息工厂&#xff08;Inmon&#xff09; 2.1 概念 2.2 主要组件 2.3 流程 三、多维数据仓库&#xff08;Kimball&#xff09; 3.1 概念 3.2 核心组件 3.3 流程 四、异同及用途对比 4.1 异同对比 4.2 特征比较 一、前言 大部分关于数据仓库构建…

数据智能引擎:企业模糊搜索API精准获取企业列表信息

引言 随着信息时代的迅速发展&#xff0c;数据变得愈加庞大和复杂。在这个大数据的时代&#xff0c;企业面临着海量信息的管理和利用挑战。为了更有效地获取并利用数据&#xff0c;企业信息模糊搜索API成为了企业数据智能引擎的一部分&#xff0c;为企业提供了精准的企业列表检…

系列十四、异步回调

一、概述 二、案例代码 /*** Author : 一叶浮萍归大海* Date: 2023/11/21 10:45* Description: 异步任务案例代码*/ public class CompletableFutureMainApp {public static void main(String[] args) throws ExecutionException, InterruptedException {CompletableFuture<…

缓存穿透、缓存雪崩、缓存击穿问题的解决思路

一、缓存穿透 缓存穿透 &#xff1a;缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。 常见的解决方案有两种&#xff1a; 缓存空对象 优点&#xff1a;实现简单&#xff0c;维护方便 缺点&am…

工作记录---淘宝双11,亿级流量高并发是怎么抗住?(站在巨人的肩膀上学习,超开心~)--------脚踏实地,持续学习(看完这一篇获益匪浅)

什么是分布式&#xff1f; 系统中的多个模块在不同服务器上部署&#xff0c;即可称为分布式系统。 如Tomcat和数据库分别部署在不同的服务器上&#xff0c;或两个相同功能的Tomcat分别部署在不同服务器上。 什么是高可用&#xff1f; 系统中部分节点失效时&#xff0c;其他节…

MatrixOne完成与麒麟信安、欧拉的兼容互认

近日&#xff0c;超融合异构云原生数据库MatrixOne企业版软件V1.0完成了与欧拉开源操作系统&#xff08;openEuler简称“欧拉”&#xff09;、麒麟信安操作系统系列产品和虚拟化平台的相互兼容认证&#xff0c;通过了欧拉兼容性测评&#xff0c;获得了《openEuler技术测评证书》…

打造完美照片,尽在PhotoFoundry for Mac

想要给你的照片加上绚丽的滤镜、调整色彩和对比度&#xff0c;甚至进行精确的修图吗&#xff1f;PhotoFoundry for Mac将成为你的绝佳选择&#xff01; PhotoFoundry for Mac是一款功能强大的照片编辑软件&#xff0c;它为你提供了丰富多样的工具和特效&#xff0c;让你能够轻…

蓝桥杯每日一题2023.11.21

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 思路&#xff1a; 1.去重排序将其进行预处理 2.用gcd得到最简比值 3.用gcd_sub分别计算分子、分母的指数最大公约数 #include<bits/stdc.h> using namespace std; const int N 110; typedef long long ll; ll…