多维数组和交错数组笔记

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 };

相关推荐
rellvera4 分钟前
【强化学习的数学原理】第02课-贝尔曼公式-笔记
笔记·机器学习
yuwinter44 分钟前
鸿蒙HarmonyOS学习笔记(2)
笔记·学习·harmonyos
游走于计算机中摆烂的2 小时前
启动前后端分离项目笔记
java·vue.js·笔记
你可以叫我仔哥呀2 小时前
ElasticSearch学习笔记三:基础操作(一)
笔记·学习·elasticsearch
maxiumII2 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件
hccee3 小时前
C# IO文件操作
开发语言·c#
广煜永不挂科5 小时前
Devexpress.Dashboard的调用二义性
c#·express
美式小田5 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
猫爪笔记6 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
_不会dp不改名_6 小时前
HCIA笔记3--TCP-UDP-交换机工作原理
笔记·tcp/ip·udp