多维数组和交错数组笔记

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

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

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

cs 复制代码
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). 多维数组

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

//声明一个4行2列的二维数组

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

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

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

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

cs 复制代码
//生成一个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

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

cs 复制代码
//定义一个交错数组,有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次,就完成了冒泡法升序排列.

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

题外话,忽然发现C#数组可以这么定义,不报错,神奇,,,

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

相关推荐
cuisidong199720 分钟前
5G学习笔记三之物理层、数据链路层、RRC层协议
笔记·学习·5g
乌恩大侠21 分钟前
5G周边知识笔记
笔记·5g
咔叽布吉2 小时前
【论文阅读笔记】CamoFormer: Masked Separable Attention for Camouflaged Object Detection
论文阅读·笔记·目标检测
johnny2332 小时前
《大模型应用开发极简入门》笔记
笔记·chatgpt
亦枫Leonlew2 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象2 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
星LZX2 小时前
WireShark入门学习笔记
笔记·学习·wireshark
努力变厉害的小超超4 小时前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
△曉風殘月〆5 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm
逐·風7 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#