网站首页 > 精选教程 正文
之前说的数组是一维数组,也是最简单最常用的数组,必须理解掌握,下面两种数组了解一些基本的知识即可,有兴趣或必要的可自行查找相关资料进行深入学习
数组中维的含义:就是一个数组中某个元素,需要使用几个数字的下标来表示这个元素,这几个数字就是几维;如下标使用一个数字的表示一维,使用两个的表示二维等等
多维数组:使用多个下标表示一个唯一的元素;常见的有二维与三维数组
一维数组可以比喻为一条线,使用线上的点表示元素,因此可以使用一个下标表示
二维数组可以比喻为一个表格,该表格有行列组成,使用两个下标表示一个元素
三维数组可以比喻为一个立方体,使用三个下标表示唯一的一个元素
//二维数组[,]使用一个逗号隔开
//开辟一个一行一列的数组
int[,] arr=new int[1,1];
//三维数组[,,]使用两个逗号隔开
//开辟一个一行一列一高的三维数组
int[,,] arr=new int[1,1,1];
//三维以上[]使用至少三个及以上逗号隔开....
二维数组
也称矩阵数组即每一行都具有相同数量的元素
二维数组的语法格式
数据类型[,] 数组名=new 数据类型[长度1,长度2];
//声明二维数组
//中括号里面两个下标之间使用逗号隔开
int[,] arr=new int[2,3];
//声明了一个两行三列的int类型数组,每个元素也是int类型的数据
//二维数组声明方式
//声明一个两行三列的int类型数组
//方式1 只声明未赋值
int[,] arr=new int[2,3];
//方式2 声明并初始化数组
int[,] arr2 = { { 1, 2, 3 }, { 4, 5, 6 } };
//最外层大括号表示整个数值
//里面的两个大括号表示二维数组行列
//元素中存储的值
//方式3 声明并赋值
int[,] arr3 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
//保证每一行的元素个数(列数)相同
int[,] arr3 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
//方式2与方式3中的数组可以称之为匿名数组
//编译器会自动给其加名字,以后说到匿名方法,类等查看反编译代码
//二维数组的注意事项与一维数组几乎一样,不再赘述
二维数组的默认值,访问,赋值,修改
int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
//二维数组的默认值与一维数组一样
//默认值也是根据声明类型的不同而不同,不再赘述
//根据下标访问二维数组具体元素
//访问数组的第4个元素
arr[1,0]=4;//数组第四个元素
//修改赋值
arr[1,0]=6;//将数组第四个元素重新修改赋值为6
二维数组(或多维数组)的属性与方法
Rank属性:获取当前数组的维数
Length属性:二维数组的长度即元素总个数(两个长度相乘)
GetLength(维的索引)方法:获取二维数组中指定维的长度,索引从0开始
遍历数组
遍历二维数组元素,需要使用双层嵌套循环
int[,] arr = new int[2, 3] { { 21, 56, 39 }, { 14, 59, 86 } };
arr[1, 0] = 6;//重新修改赋值
//遍历二维数组元素
//GetLength(0)获取行的个数
for (int i = 0; i < arr.GetLength(0); i++)//行
{
//GetLength(1)获取列的个数
for (int j = 0; j < arr.GetLength(1); j++)//列
{
Console.WriteLine("第{0}行第{1}列的值为 {2}", i, j, arr[i, j]);
}
}
Console.ReadKey();
求和,平均值,最大值,最小值
二维数组中没有与一维数组一样的快捷方法(以后自写一个求常用值的方法,不知最新.Net框架中是否含有类似一维数组的快捷方法)
int[,] arr = new int[2, 3] { { 21, 56, 39 }, { 14, 59, 86 } };
int sum = 0, avg = 0, max = arr[0, 0], min = arr[0, 0];
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
sum += arr[i, j];//求和
if (arr[i, j] > max)//求最大值
{
max = arr[i, j];
}
if (arr[i, j] < min)//求最小值
{
min = arr[i, j];
}
}
}
avg = sum / arr.Length;
Console.WriteLine("和为{0} 最大值为{1} 最小值为{2} 平均值为{3}", sum, max, min, avg);
Console.ReadKey();
排序
将二维数组元素转移到一维,再使用之前的冒泡排序或Sort()方法
int[,] arr = new int[2, 3] { { 21, 56, 39 }, { 14, 59, 86 } };
int count = 0;//用于一维数组的下标
//声明一个一维数组
int[] nums = new int[arr.Length];
//将二维中的元素赋值到一维数组中
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
nums[count] = arr[i, j];
count++;
}
}
//使用冒泡排序方法
int temp = 0, len = nums.Length - 1;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len - i; j++)
{
//第一个元素与后面一个元素比较
//如果前面大于后面就交换数据即挪位置
if (nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
//快捷方法 引入using System.Linq;命名空间
//Array.Sort(nums);
//打印输出排序后的数据
for (int i = 0; i < nums.Length; i++)
{
Console.Write("{0} ", nums[i]);
}
交错数组
交错数组有的叫锯齿数组或数组的数组等诸多名称都一个意思
交错数组的本质是一个一维数组即本质是一维数组(使用Rank属性查看),但是这个数组的元素还是一维数组,因此叫做数组的数组;数组中每个数组的长度不一因此叫做锯齿数组
交错数组的语法格式
数据类型[][] 数组名称 =new [长度1][长度2];
第一个下标(长度1)必有,第二个下标(长度2)可省略
第一个长度用于声明时指定需要在内存中开辟多大的空间
第二个长度可以指定或者初始化时,根据指定或初始化时元素的个数决定
//声明方式
//声明有两个一维数组做元素的交错数组
//方式1
int[][] arr = new int[2][];
//方式2
int[][] arr1 = new int[2][] { new int[] { }, new int[] { } };
//方式3
int[][] arr2 = { new int[] { }, new int[] { } };
//访问/赋值/修改
//方式1的赋值
int[][] arr = new int[2][];
//先将交错数组元素的数组声明出来
arr[0] = new int[2];
arr[1] = new int[2];
//再逐个赋值
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 1;
arr[1][1] = 2;
//方式2与方式3赋值方式一样
int[][] arr1 = new int[2][] {
//可以称之为锯齿数组
//第一个元素是有两个元素的数组
new int[] {1,2},
//第二个元素是有三个元素的数组
new int[] {1,2,3 }
};
//两个中括号中分别存储
int[][] arr = new int[2][];为例
第一个中括号中存储的是一维数组的地址
第二个中括号中存储的是一维数组元素的值
int[][] arr2 = { new int[] { 4, 5, 6 }, new int[] { 6, 7, 8 } };
int[0]存储的是new int[] { 4, 5, 6 }数组在内存中的地址
nt[0][]存储的是 4, 5, 6 是数组内元素的值
交错数组的长度就是元素中数组的长度相加的和(二维数组是相乘)两者都可以使用Length属性得到数组的总个数
遍历交错数组
//未声明交错数组中元素的数组 报异常
//相当于 int[] nums1=null; nums2=null;
int[][] arr = new int[2][];
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr[i].Length; j++)
{
Console.WriteLine("{0} ", arr[i][j]);
}
}
Console.ReadKey();
int[][] arr1 = new int[2][] { new int[] { }, new int[] { } };
//已声明数组,只是数组中无元素而已
//自己测试类似交错数组
//int[][] arr1 = new int[2][] { new int[] { 1 }, new int[] { 1,2,3 } };
for (int i = 0; i < arr1.Length; i++)
{
for (int j = 0; j < arr1[i].Length; j++)
{
Console.WriteLine("{0} ", arr1[i][j]);
}
}
Console.WriteLine("遍历arr1完毕");
int[][] arr2 = { new int[] { 4, 5, 6 }, new int[] { 6, 7, 8 } };
for (int i = 0; i < arr2.Length; i++)
{
for (int j = 0; j < arr2[i].Length; j++)
{
Console.WriteLine("{0} ", arr2[i][j]);
}
}
Console.WriteLine("遍历arr2完毕");
Console.ReadKey();
二维数组与交错数组的区别:
1)二维数组中的每一行都具有相同数量的元素;交错数组中各个行元素的数量可以不同
2)二维数组本质上也是以数组作为数组元素的数组,也称为矩阵数组
3)交错数组是元素为数组,交错数组元素的维度和大小可以不同,因此被称为“数组的数组”或锯齿数组(相对于二维数组来说)
猜你喜欢
- 2024-11-16 面向JVM编译-类实例、数组的创建和使用
- 2024-11-16 来,一起聊聊Excel中的数组(excel数组公式有哪些)
- 2024-11-16 数组的维数及数组公式的讲解(数组维的大小)
- 2024-11-16 C语言中数组的类型和使用(c语言中数组的概念及作用)
- 2024-11-16 Numpy第6练:如何操控数组的维度与形状?干货满满!
- 2024-11-16 NumPy之:多维数组中的线性代数(numpy 多维数组)
- 2024-11-16 S7-1200 数组数据类型(ARRAY)(s71200plc数据类型)
- 2024-11-16 JAVA中如何调用matlab并返回运算结果?
- 2024-11-16 Java基础03(java基础案例教程第二版)
- 2024-11-16 数据结构:数组的操作(数据结构数组的顺序存储)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)