数组

C++数组(数组定义方式、数组名作用、数组地址) 文章目录1 数组概述2 一维数组2.1 一维数组定义方式2.2 一维数组数组名2.3 冒泡排序3 二维数组3.1 二维数组定义方式3.2 二维数组数组名3.3 二维数组应用案例 1 数组概述 数组是一个集合,用于存放相同类型的数据元素。 特点1:数组中的每个数据元素具有相同的数据类型。 特点2:数组占用一段连续的内存空间。 2 一维数组 2.1 一维数组定义方式 注1:数组名的命名规范与变量名命名一致,且数组名不能与变量重名。 注2:数组的下标/索引从0开始。 一维数组定义的3种方式: (1)数据类 阅读详情

数组

概述

​ 相同类型数据的有序集合

​ 若干个的,有先后顺序组成、并通过下标来访问集合中的数据

数组声明和创建

​ 1.声明数组变量

​ DataType[] arr; //使用习惯上更加推荐这个
DataType arr[];

​ 2.通过new来创建数组对象

​ DataType[] arr = new DataType[arraySize];

​ 注:

​ 数组的元素从 0 开始

​ 通过 array.length 可以获得 数组的长度

public static void main(String[] args) {
        //首先申明数组变量
        int[] arrInt;

        //通过new来创建数组
        arrInt = new int[10];

        //赋值
        arrInt[0] = 1;
        arrInt[1] = 2;
        arrInt[2] = 3;
        arrInt[3] = 4;
        arrInt[4] = 5;
        arrInt[5] = 6;
        arrInt[6] = 7;
        arrInt[7] = 8;
        arrInt[8] = 9;
        arrInt[9] = 10;

        System.out.println(arrInt.length);//10

        //计算所有元素的和
        int sum = 0;
        for (int i = 0; i < arrInt.length; i++) {
            sum += arrInt[i];
        }

        System.out.println(sum);//55
    }

三种初始化

​ 静态初始化

int[] arr = {1,2,3};

​ 动态初始化

int[] arr = new int[10];
arr[0]=1;
arr[1]=2;

​ 数组的默认初始化

​ 由于数组是一种引用类型、故分配空间时,其中的元素被隐式初始化了 (eg: int ->0,String->null)

基本特点:

​ 数组长度是固定的

​ 数组内的元素都为同一种类型

​ 数组的元素既可以是基本类型、也可以是引用类型

​ 数组也是对象的一种、因为数组在java中存放于堆中

数组使用

​ for-each循环 [JDK1.5 无下标的操作]

public static void main(String[] args) {
        int[] arrInt ={1,2,3,4,5,6,7,8,9};

        for (int i : arrInt) {
            System.out.println(i);
        }

    }

​

​ 数组 可以作为参数

    public static void main(String[] args) {
        int[] arrInt ={1,2,3,4,5,6,7,8,9};

        printArr(arrInt);

    }

    //打印数组元素
    public static void printArr(int[] arr) {
        for (int i : arr) {
            System.out.println(i);
        }
    }


​ 数组 可以作为返回值

    public static void main(String[] args) {
        int[] arrInt ={1,2,3,4,5,6,7,8,9};

        int[] arrFun = reverse(arrInt);
        printArr(arrFun);

    }

    //反转数组
    public static int[] reverse(int[] arr){
        int[] result = new int[arr.length];

        for (int i = 0,j = result.length-1 ; i < arr.length; i++,j--) {
            result[j] = arr[i];
        }

        return result;
    }

多维数组

​ 数组的数组。

​ 表现结果: [ [0,1] , [0,1] ]

​ 声明形式: DataType[ ] [ ] arr = { {dataType,dataType} , {dataType,dataType} … };

public static void main(String[] args) {

        int[][] arr = { {1,2} , {2,3} ,{3,4} };

        /*              arr[][0] arr[][1]
            arr[0][]        1       2
            arr[1][]        2       3
            arr[2][]        3       4

            即第一个[]表明有多少行、第二个[]表明有多少列 
         */

    }

Arrays类

​ (可看相关文档)

​ 是有关于数组的工具类 java.util.Arrays

简单介绍

 public static void main(String[] args) {

        int[] a ={2,3,4,1,8,6,9,7};

        //打印数组元素
        System.out.println(Arrays.toString(a)); //[2, 3, 4, 1, 8, 6, 9, 7]

        //排序数组 ->升序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a)); //[1, 2, 3, 4, 6, 7, 8, 9]

    }

​

稀疏数组

​ 【压缩空间】

​ 当数组大部分为0、或同一值时,可用稀疏数组来保存该值

​

​ 处理方式:

​ 记录数字有几行几列、多少不同值

​ 将不同值的元素、行列、值记录在一个小规模的数组

eg:

						行 列 值
[  0,0,1,0,0   ]		  1  2	1
[  2,0,2,0,0   ]  ==>      2  0  2
[  0,0,0,0,0   ]		  2  2  2	

​

案例:黑白棋

public static void main(String[] args) {
        //1.创建二维数组 11*11 0->没有棋子 1->黑棋 2->白棋
        int[][] arr = new int[11][11];

        arr[1][2] = 1;
        arr[2][3] = 2;

        //输出元素数组
        for (int[] ints : arr) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        /*
            0	0	0	0	0	0	0	0	0	0	0
            0	0	1	0	0	0	0	0	0	0	0
            0	0	0	2	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
            0	0	0	0	0	0	0	0	0	0	0
         */

        //变成稀疏数组
            //1.获取有效值的个数
        int nums = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[i][j] != 0){
                    nums++;
                }
            }
        }
        System.out.println(nums); //2

            //2.创建稀疏数组
        int[][] arrOther = new int[nums+1][3];

        arrOther[0][0] = 11; //行
        arrOther[0][1] = 11; //列
        arrOther[0][2] = nums; //值的个数

            //遍历二维数组,将非零值存入稀疏数组
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[i][j] != 0){
                    count++;
                    arrOther[count][0] = i;
                    arrOther[count][1] = j;
                    arrOther[count][2] = arr[i][j];
                }
            }
        }

            //输出稀疏数组
        for (int i = 0; i < arrOther.length; i++) {
            System.out.println(arrOther[i][0] + "\t"
                    + arrOther[i][1] + "\t"
                    + arrOther[i][2] + "\t");
        }
        /*
            11	11	2
            1	2	1
            2	3	2
         */

        //3.还原稀疏数组
            //1.读取稀疏数组
        int[][] arrBack = new int[arrOther[0][0]][arrOther[0][0]];

            //2.给其中的元素还原它的值
        for (int i = 1; i < arrOther.length; i++) { //从 i=1 开始 是因为 第0行是信息而非数据
            arrBack[arrOther[i][0]][arrOther[i][1]] = arrOther[i][2];
        }

        for (int[] ints : arrBack) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        /*
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	1	0	0	0	0	0	0	0	0	
        0	0	0	2	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
        0	0	0	0	0	0	0	0	0	0	0	
         */
    }
09-数组的含义以及零长数组变长数组与多维数组 阅读详情

相关推荐

第1期技术: DQN算法原理及实现过程

利用神经网络近似值函数的方法表示为: V^(s,w)≈Vπ(s)q^(s,a,w)≈qπ(s,a) \hat{V}(s, w) \approx V_{\pi}(s) \\ \hat{q}(s, a, w) \approx q_{\pi}(s, a) V^(s,w)≈Vπ​(s)q^​(s,a,w)≈qπ​(s,a) 那么具体的工作过程是怎样实现的? 以及如何从端到端的过程,本文将讲解Deep Q Network(DQN, 而这正是由DeepMind于2013年和2015年分别提出的两篇论文《Playi

深度强化学习实验室:一个“开源开放、共享共进”的强化学习学术组织。 4954

单片机数组前的code的作用

目录code的作用 RAMROMRAM和ROM相比节约RAM空间的作用没用code 时,数组定义在RAM里面,有code时,数组定义在ROM里面(固定的数据,不能修改) RAM又被称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据(掉电数据消失哦)如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。 ROM又被称为“只读存储器”,ROM所存数据,一般

公众号:风景邮递Yuan的博客 1827

树莓派4B保姆级教程:从零配置Python虚拟环境到PySide2开发全流程(含避坑指南)

本文提供树莓派4B上配置Python虚拟环境及PySide2 GUI开发的完整教程。针对armv7l架构的特殊性,详细讲解了从系统准备、虚拟环境创建到PySide2安装的避坑指南,并重点解决了跨平台UI文件处理等常见难题,帮助开发者构建稳定高效的开发环境。

9q8w7e6r5的博客 822

关于keil C51中const和code的使用(数组)

const ,code 修饰数组的功能和注意事项

DX_007的博客 1万+

CH376S模块实战:如何通过串口轻松实现单片机与U盘的数据交互

本文详细介绍了如何利用CH376S模块,通过串口通信实现单片机与U盘的数据交互。文章从模块原理、硬件连接到核心指令集进行了全面解析,并提供了基于STM32的实战代码示例。CH376S模块极大地简化了USB协议和文件系统的复杂性,使开发者能快速为嵌入式设备添加便捷的数据存储与导出功能,适用于数据记录、配置导入等多种应用场景。

weixin_29165725的博客 458

从零到英雄:WSL2与Ubuntu22.04的终极性能调优指南

本文详细介绍了如何在Windows系统中通过WSL2与Ubuntu22.04进行性能调优,涵盖内核定制、GPU加速、网络优化等关键技巧,帮助开发者打造媲美原生Linux的高性能开发环境,特别适合AI训练和大数据处理等资源密集型任务。

weixin_29218509的博客 523

51单片机数组的定义方法以及code与data的作用。

数组前不加“code”或“> code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中不能改变;xdata 指定数据是存储在外部数据存储器了;data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快;idata 指定数据存储在内部低256字节数据存储器里,但51只有128字节内部RAM,52才...

yihuliunian的博客 8159

本地部署 pyvideotrans(视频翻译配音工具)

语音识别选择faster-whisper(本地),模型选择预先下载并保存的medium,然后选择好要处理的视频以及保存到的位置,这里我选择了一个名为why not的英文演讲视频,保存在桌面_vedio_out文件下。将附件中faster-medium.7z 和 faster-small.7z解压到项目中的models目录下, 解压后,目录中应该存在 models--Systran--faster-whisper-small。en.m4a|.wav = 原始视频中的音频文件(包含所有背景音和人声)

西唯兵欧泡的博客 2342

51单片机C语言code定义,51单片机数组的定义方法(code与data的作用)

数组前不加“code”或“data”,则默认将数组存放在程序存储器中;code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中不能改变;xdata 指定数据是存储在外部数据存储器了;data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快;idata 指定数据存储在内部低256字节数据存储器里,但51...

weixin_29032489的博客 7257

UE4项目迁移指南:如何无缝导入外部.uasset文件并保持材质关联

本文详细解析了将外部.uasset文件无缝导入UE4项目的专业方法。针对手动复制文件时常见的材质关联丢失问题,提供了使用引用查看器进行诊断和修复的实用技巧,并推荐使用引擎内置的“迁移”功能确保资源依赖关系的完整性,帮助开发者高效整合项目资源。

t8u9v0的博客 1046

第一讲:halcon模板匹配捆绑测量矩形检测芯片针脚

使用halcon模板匹配捆绑测量矩形,检测位置发生变换的芯片针脚缺陷。

uiopmn1的博客 2995

【CODE】数组——牛客·剑指offer

二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 对角线!!! https://blog.youkuaiyun.com/alidada_blog/article/details/82494856 class Solution { public...

Li_Jiaqian的博客 332

【AI智能体】Codex AI 辅助编程高级技能实战操作详解

Codex AI 辅助编程高级技能实战操作详解

congge 6758

【C语言数组】一维数组,二维数组详解,数组传参,变长数组,这篇文章让你更全面的认识数组。

【C语言数组】详解一维数组,二维数组,数组传参,变长数组,这篇文章让你更全面的认识数组。

程序员良辰 2703

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C语言数组之指针数组和数组指针

指针数组指针数组指针数组

weixin_34481217的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++ 数组、数组指针、指针数组、动态数组等详解

先了解一下数组的结构,然后接着了解动态数组的结构。 数组数组: (1)数组大小固定。 (2)数组是一种复合类型 (3)存放类型相同的对象的容器,需要通过所在位置访问这些对象。 (4)数组的元素应该为对象,因此不存在引用的数组 (5)维度:数组中元素的个数,必须大于0,编译的时候维度应该是已知的,也就是说,维度必须是一个常量表达式。 (6)不能将数组的内容拷贝给其他数组作为其初始值,也不

暖心~的博客 5281

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php数组(数组的定义、使用、删除数组、数组操作符、数组排序、数组元素查找、数组的常用函数)

var_dump()函数与print_r()函数的用法类似,但是var_dump()函数的功能更加强大,它可以在打印数组元素的同时打印元素中值的数据类型。关联数组是指下标为字符串的数组。在数组$arr中只定义了数组元素的值,省略了“键”的部分,则$arr默认为索引数组,并且“键”从0开始,依次递增。array_merge()将一个或多个数组的单元合并起来,一个数组中的值附加在另一个数组的后面,返回一个新的数组。由于数组中的键和值是映射关系,并且键是数组元素的唯一标识,所以可以根据元素的键来获取该元素的值。

m0_69034993的博客 4975

数组与数组对象

有很多初学者可能会觉得这两个是一样的,以前我也是这么认为的。但是它们是不一样的,虽然他们都是数组。数组只是一个值得集合,而数组对象是一个对象的集合;数组对象的范围更大。 数组是一个值得集合,每一个值都有一个索引号,索引从0开始而每个索引都有一个相应的值,根据需要添加更多的值。数组有一维数组、二维数组等。 我们知道变量用来存储数据,一个变量只能存储一个内容。如果需要存储更多的数据一个变量是不能够满足...

weixin_44560796的博客 9155

21.可能是全网最详细的shell中数组详解,声明数组,数组赋值,显示所有数组,引用数组,引用数组所有元素,数组长度,删除数组,数组切片,追加元素,关联数组,综合案例

数组是若干数据的集合,其中的每一份数据都称为元素。本小节详解shell中数组,声明数组,数组赋值,显示所有数组,引用数组,引用数组所有元素,数组长度,删除数组,数组切片,追加元素,关联数组,综合案例

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 3456

数组 从数组中去掉元素为0的数组

数组 从数组中去掉元素为0的数组 需求:定义一个整型数组,将数组中的0去掉后返回一个新数组。 例如:数组为 int[] arr={1,13,45,5,0,0,16,6,0,25,4,17,6,7,0,15}; 要求将以上数组中为0的元素去掉,将不为0的值存入一个新数组,生成新的数组作为返回值: int[] newArr={1,13,45,5,16,6,25,4,17,6,7,15}; 思路: 遍历一次 把不为零的元算一遍 计算有多少个不为零的数 定义一个新数组 长度为不为零的元素的个数 再遍历一次

weixin_44434205的博客 4923

C#数组 一维数组、二维数组、三维数组

一位数组: 初始化:int[] arr = new int[5] = {1,2,3,4,5}; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace wm110_5 { class Program { static void

qingdujun 1万+

VBA数组知识,数组的组合和嵌套,一维数组的组合并非二维数组,二维数组的组合并非三维数组

1 数组嵌套的知识 1维数组的嵌套并非2维数组 二维数组的嵌套并非三维数组 2 数组的嵌套写法 1维数组的嵌套:arr(m)(i) 2维数组的嵌套:arr(m)(i,j) Sub test1001() Debug.Print "测试一维数组和其嵌套" '一维数组 arr1 = Array(1, 3, 5, 7, 9) arr2 = Array(2, 4, 6, 8, 10) ...

奔跑的犀牛先生 4527

一维数组,二维数组,三维数组

一维数组 简称数组,形式为a[i],在内存中占用i个大小相等的连续空间,其中数组名a为该空间的首地址,类似于&a[0],数组名不是指针,但可以转化成指针使用。 例如: char a[3];假设数组的首地址为0x0, 则&a[2]则为0x2; 二维数组 形式为a[i][j],其中i表示行数,j表示列数,在内存中占用i * j个大小相等的连续空间,其中数组名a为该空间的首地址,类似于&a[0][0],a[1]为第1行的首地址,类似于&a[1][0]。 例如: char a[4][

weixin_42282031的博客 2698

数组与匿名数组

首先数组是一种数据结构 数组是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。 我们可以...

wy15027539821的博客 3305

什么是数组、如何创建数组、数组赋值、数组增加一个新元素

一起组团(什么是数组)我们知道变量用来存储数据,一个变量只能存储一个内容。假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦。我们用数组解决问题,一个数组变量可以存放多个数据。好比一个团,团里有很多人,如下我们使用数组存储5个学生成绩。数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加...

qq_42453950的博客 9394

C# 数组相关:不可变数组、多维数组、交错数组、隐式类型化数组、 数组协变、 Array类

不可变数组、多维数组、交错数组、隐式类型化数组、 数组协变、 Array类 数组是引用类型;int[ ] 中 int 也是类型,所以数组可以认为是复合类型数组名最好加 s数组是集合,集合不一定是数组数组的元素 的类型 既可以是引用类型也可以是值类型;分别称为:引用类型数组 和 值类型数组。创建数组实例后,其每个元素都有默认值,string 的为空字符串,int 的为 0 ,bool 的为 false,引用类型的为 null;

weixin_48990772的博客 1446
上一篇: Vue过滤器
下一篇: 面向对象
code_Floyed
博客等级 码龄7年 3粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值