多维数组和交错数组笔记

1.) 关于数据的几个概念:

Rank,即数组的维数,其值是数组类型的方括号之间逗号个数加上1。

Demo:利用一维数组显示斐波那契数列F(n) = F(n-1) + F(n-2) (n >=2 ),每行显示5项,20项.

static void Main(string[] args)

{

    int[] F = new int[20];

    F[0] = 1;F[1] = 1;

    //计算斐波那契数列每个元素值

    for (int i = 2; i < F.Length; i++) F[i] = F[i - 1] + F[i - 2];

    //循环显示斐波那契数列,每行显示5个

    for (int i = 0; i < F.Length; i++)

    {

        //换行

        if (i >0 && i % 5  == 0)

            Console.Write("\n");

        Console.Write(F[i].ToString().PadLeft(6, ' '));

    }

    Console.ReadKey();

}

2).多维数组

声明多维数组时,用逗号表示维数,一个逗号表示两维数组,两个逗号表示三维数组,以此类推。注意:在声明数组声明中即使没有指定维数的实际大小,也必须使用逗号分隔各个维,如:

//声明一个42列的二维数组

int[,] myArray = new int[4, 2];

//声明一个3页,5行,2列的3维数组

int[,,] myArray_3 = new int[3, 5, 2];

编程形成并显示4行4列的二维矩形数组

//生成一个4*4的u矩阵

int[,] myMatrix = new int[4, 4];

int value = 0;

for (int r = 0; r < myMatrix.GetLength(0); r++)

{

    for (int c = 0; c < myMatrix.GetLength(1); c++)

    {

        myMatrix[r, c] = value++;

        Console.Write(value + "\t");

        if (value % 4 == 0)

            Console.Write("\n");

    }

}

3.)交错数组(jagged array):

数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。

交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null

交错数组元素的维度和大小可以不同,需要声明、实例化并且初始化后才能使用

//定义一个交错数组,有3个元素,然后再给三个元素分别赋值(一维数组)

int[][] myJaggedArray = new int[3][];

myJaggedArray[0] = new int[]{ 1,2,3,4};

myJaggedArray[1] = new int[] { 4, 5,};

myJaggedArray[2] = new int[] { 6, 7, 8 };



//定义一个交错数组,有3个元素,声明交错数组时初始化一维交错数组的每个元素对应的一维数组

int[][] myJaggedArray2 = new int[3][]

{

    new int[]{1,2,3,4},

    new int[]{4,5},

    new int[]{6,7,8},

};

//循环取出交错数组的所有元素并显示出来

for (int r = 0; r < myJaggedArray2.Length; r++)

{

    //myJaggedArray2[r]元素为一维数组,用Leng属性或GetLeng()方法获取数组长度

    //对于一维数组GetLength(0)和GetLength(),返回结果一样

    for (int c = 0; c < myJaggedArray2[r].GetLength(0); c++)

    {

        Console.Write(myJaggedArray2[r][c] + "\t");

    }

    Console.WriteLine();

}

Console.WriteLine("------------------------------");

           

//声明一个一维交错数组,其元素为大小不同的二维数组

int[][,] myJaggedArray3 = new int[3][,]

{

    new int[2,3]{{1,2,3},{4,5,6}},

    new int[,]{{11,12},{13,14}},

    new int[,]{{21,22},{ 23, 24},{ 25, 26},{27,28}},

};

//循环取出交错数组的所有元素并显示出来

for (int r = 0; r < myJaggedArray3.Length; r++)

{

    //myJaggedArray3[r].GetLength(0)返回一维交错数组第r个元素的0维数组长度,即元素数组的行

    for (int j = 0; j < myJaggedArray3[r].GetLength(0); j++)

    {

        //myJaggedArray3[r].GetLength(1)返回一维交错数组第r个元素的1维数组长度,即元素数组的列

        for (int k = 0; k < myJaggedArray3[r].GetLength(1); k++)

        {

            Console.Write(myJaggedArray3[r][j, k] + "\t");

        }

        Console.WriteLine();

    }

    Console.WriteLine();

}

4.) 数组的基本操作和排序

数据常用操作:数组求和、求平均值、最值及其位置

Array类的常用操作:

Array.clear(数组名,起始元素,元素个数)

Array.Copy(源数组,目标数组,要复制的元素个数);

Array.Copy(源数组,目标数组,目标起始索引,要复制的元素个数);

Array.Reserve(数组名)

Array.Reserve(数组名,起始索引,元素个数)

Array.Sort(数组名)

数组对象的常用操作:

Clone(),CopyTo(),getLength(),GetLowerBound(), GetUpperBound()等方法

Leng,Rank等属性.

数组的常见排序方法,

冒泡法(bubble sort)、选择法(SelectSort);

以10个元素的一维数组升序排序为例,说明冒泡法排序:

将第一个元素与第二个元素比较,如果元素1>元素2,则交换顺序,然后依次每个元素与后面的一个元素比较,大的值往后移,直到9,10元素比较完,第一轮冒泡比较结束

然后开始第二轮,从第二个元素与相邻后面的元素比较,直到比较第8,9元素,

以此类推,比较10-1=9次,就完成了冒泡法升序排列.

选择法就是依次循环选择出最小值,从前往后依次放在的指定位置即可,不再多叙.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++初学者:像C#一样优雅写程序

C语言的强大&#xff0c;在于自由自在&#xff0c;你可以随便怎么写程序&#xff0c;不讲格式&#xff0c;可以很整齐&#xff0c;也可以鬼画符&#xff0c;只要能运行就可以了&#xff0c;程序员可以自由发挥。 如图&#xff1a; 国际C语言大赛中的代码 图2 C的语言更强大&…

机器人深度学习IMU和图像数据实现焊接精细操作

在双电极气体保护金属弧焊 &#xff08;DE-GMAW&#xff09; 中&#xff0c;对焊枪和旁路电极位置的精确控制是至关重要的。为了这一过程&#xff0c;科研团队提出了安装微型惯性测量单元&#xff08;IMU&#xff09;传感器和摄像头&#xff0c;来记录焊工控制焊枪的移动和微调…

pyhive入门介绍和实例分析(探索票价与景点评分之间是否存在相关性)

介绍 PyHive 是一组 Python DB-API 和 SQLAlchemy 接口&#xff0c;可用于 Presto 和 Hive。它为 Python 提供了一个与 Presto 和 Hive 进行交互的平台&#xff0c;使得数据分析师和工程师可以更方便地进行数据处理和分析。 以下是使用 PyHive 进行数据分析时需要注意的几点&…

Vue时间组件:Dayjs与Moment对比

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

FFmpeg初步了解

一、了解FFmpeg 1.1 什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0c;为了保证…

07_Response

文章目录 案例&#xff08;请求分发案例&#xff09; Response响应行响应头响应体特殊响应头refreshContent-typeContent-dispositionlocation 案例&#xff08;登录案例&#xff09; 案例&#xff08;请求分发案例&#xff09; 场景&#xff1a;有多个请求 Http://localhost:…

python Flask扩展:如何查找高效开发的第三方模块(库/插件)

如何找到扩展以及使用扩展的文档 一、背景二、如何寻找框架的扩展&#xff1f;三、找到想要的扩展四、找到使用扩展的文档五、项目中实战扩展 一、背景 刚入门python的flask的框架&#xff0c;跟着文档学习了一些以后&#xff0c;想着其实在项目开发中&#xff0c;经常会用到发…

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 在建造者模式中&#xff0c;有如下4个角色&#xff1a; 抽象建造者&#xff08;Builder&#xff09;&#xff1a;用于规范产品的各个组成部分&#xff0c;并进行抽象&…

HTTP请求走私!!!(一)

想都是问题&#xff0c;做才是答案 什么是请求走私&#xff1f; HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式&#xff0c;进行绕过安全机制&#xff0c;实施未授权访问一种攻击手段&#xff0c;获取敏感信息&#xff0c;并直接危害其他用户。 Web 应用…

集合系列(十五) -CopyOnWriteArrayList详解

一、摘要 在介绍 CopyOnWriteArrayList 之前&#xff0c;我们一起先来看看如下方法执行结果&#xff0c;代码内容如下&#xff1a; public static void main(String[] args) {List<String> list new ArrayList<String>();list.add("1");list.add(&quo…

RabbitMQ(简单模式)

2种远程服务调用 1openFeign&#xff1a; 优点&#xff1a;能拿到被调用的微服务返回的数据&#xff0c;系统系耦度高&#xff0c;系统稳定。 缺点&#xff1a;同步调用&#xff0c;如果有很多服务需要被调用&#xff0c;耗时长。 MQ,消息队列&#xff0c;RabbitMQ是消息we…

windows DNS 服务器常用配置

Windows Server 上的 DNS 服务器配置主要包括以下步骤和常见设置&#xff1a; 安装 DNS 服务 打开服务器管理器&#xff0c;在 "角色和功能" 添加或删除角色中安装 DNS 服务器角色。 配置 DNS 服务器基础设置 添加 DNS 区域&#xff1a; 在 DNS 管理器中&#xff…

WPF 窗体样式 WindowStyle 设置 none, 如何移动窗体

当窗体样式设为None时&#xff0c;因为标题栏被隐藏&#xff0c;我们无法移动窗体&#xff0c;为了使窗体可以移动&#xff0c;我们要为window中的布局控件添加MouseDown事件的事件处理器&#xff0c;并且要为其设置一个背景(window设置为允许透明&#xff0c;当grid没有背景时…

书籍推荐|meta分析R语言实践教程-Doing Meta-Analysis with R: A Hands-On Guide

“The problems are solved, not by giving new information, but by arranging what we have known since long.” – Ludwig Wittgenstein 推荐理由 《Doing Meta-Analysis with R: A Hands-On Guide》是由 Mathias Harrer, Pim Cuijpers, Toshi Furukawa, 和 David Ebert所…

Hides for Mac:应用程序隐藏工具

Hides for Mac是一款功能强大的应用程序隐藏工具&#xff0c;专为Mac用户设计。它能够帮助用户快速隐藏当前正在运行的应用程序窗口&#xff0c;保护用户的隐私和工作内容&#xff0c;避免不必要的干扰。 软件下载&#xff1a;Hides for Mac下载 Hides for Mac的使用非常简单直…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f; 点击链接地址&#xff0c;下载压缩包。 完成后解压 使用方式&#xff08;三种&#xff09;&#xff1a; 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下&#xff0c;使用nc&a…

0.96寸OLED屏调试 ----(一)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 首先介绍一下OLED显示模块&#xff0c;SSD1306是一款OLED驱动芯片&#xff0c;拥有最大128*64像素支持&#xff…

亚马逊云科技:基于老服务器打造的旧实例类型

内容摘要&#xff1a; 2021年&#xff0c;距离第一个EC2实例上线已经十五周年了。 在漫长的开发过程中&#xff0c;很多EC2实例自然会基于旧服务器构建。 随着时间的推移&#xff0c;旧的服务器总是需要更换硬件&#xff0c;实例也得更换&#xff0c;但并不是所有的用户都想迁…

腾讯云免费云服务器申请流程详解

随着云计算的普及&#xff0c;越来越多的企业和个人开始选择使用云服务器。腾讯云作为国内领先的云计算服务提供商&#xff0c;为用户提供了丰富的云产品和服务。本文将为大家详细介绍腾讯云免费云服务器的申请流程。 一、注册腾讯云账号 首先&#xff0c;需要注册一个腾讯云账…

【氮化镓】镁激活退火对p-GaN迁移率和阈值电压的影响

【Mg activation anneal of the p-GaN body in trench gate MOSFETs and its effect on channel mobility and threshold voltage stability】 文献总结&#xff1a; 本研究探讨了在沟道栅MOSFETs中&#xff0c;镁&#xff08;Mg&#xff09;激活退火步骤对p型氮化镓&#xf…
最新文章