多维数组和交错数组笔记

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 int4, 2;

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

int,, myArray_3 = new int3, 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 };

相关推荐
東雪木1 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Oll Correct2 小时前
实验二十九:TCP的运输连接管理
网络·笔记
飞翔中文网3 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
智者知已应修善业4 小时前
【proteus设计文氏正弦波信号发生器】2023-5-9
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
凉、介5 小时前
深入理解 ARMv8-A|处理器模式与寄存器
笔记·学习·嵌入式·arm
whyTeaFo6 小时前
MIT 6.1810: Lec 5: calling conventions and stack frames RISC-V
笔记
上课不要睡觉了7 小时前
【统计法规】4.1统计管理体制概述
笔记·统计师考试
影寂ldy7 小时前
C# 类和对象
开发语言·c#
墨白曦煜7 小时前
算法实战笔记:剥开回溯算法的外衣——从通用模板到高阶去重(八)
笔记·算法
Upsy-Daisy8 小时前
IOTA 学习笔记(四):当前 IOTA 架构总览
笔记·学习·架构