数组
一、什么是数组
数组是包含若干个相同类型的变量,这些变量都可以通过索引(从0开始)进行访问。数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其相对应。
数组是通过指定数组的元素类型,数组的维数及数组每个维度的上限和下限来定义的,即一个数组的定义需要包含以下几个要素。
元素类型。
数组的维数。
每个维数的上下限。
数组的元素表示某一种确定的类型,如整数或字符串等。那么数组的确切含义是什么呢?数组类型的值是对象,数组对象被定义为存储数组元素类型的一系列位置。也就是说,数组是一个存储一系列元素位置的对象。数组中存储位置的数量由数组的下标和长度来确定。
数组类型是从抽象类型Array派生的引用类型,通过new运算符创建数组并将数组元素初始化为它们的默认值。数组可以分为一维数组,二维数组和多维数组等。
(数组最大的问题就是长度的限制;数值里面所保存的信息类型全部都是一致的。)
二、一维数组
一维数组即数组的维数为1。一维数组就好比一个大型的零件生成公司,而公司中的各个车间(如车间1,车间2,车间3等,这些名词相当于数组中的索引号)就相当于一维数组中的各个元素,这些车间既可以单独使用,也可以一起使用。
2.1 数组定义
数据类型[] 数组名=new 数据类型[数组长度];
//数据类型[]数组的名称=new数组类型[数组的长度]
//ints的数组的元素类型是int元素的个数(长度)为5
int[] ints = new int[5];
//给每个元素赋值
ints[0] = 10;
ints[1] = 20;
ints[2] = 30;
ints[3] = 40;
ints[4] = 50;
//输出元素
//i实际上就已经变成了数组的下标
for (int i = 0; i < ints.Length; i++)
{
Console.WriteLine(ints[i]);
}
Console.ReadKey();
数据类型[] 数组名={值1,值2,值3,值4};
//由初始化的值来决定数组的长度
int[] ints = { 1, 2, 3, 4, 5, 6 };
Console.WriteLine("长度为:{0}",ints.Length);
foreach (int i in ints)
{
Console.WriteLine(i);
}
Console.ReadKey();
三、二维数组
二维数组即数组的维数为2,它相当于一个表格。
3.1 数组的定义
数据类型[,] 数组名=new 数据类型[数值1,数值2];
数据类型[,] 数组名=new 数据类型[,]{{值1,值2},{值1,值2},{值1,值2}};
int[,] ints = new int[3, 2];
//循环赋值
for (int i = 0; i < ints.Length/2; i++)
{
for (int j = 0; j < ints.Length/3; j++)
{
ints[i, j] = 10;
}
}
for (int i = 0; i < ints.Length / 2; i++)
{
for (int j = 0; j < ints.Length / 3; j++)
{
Console.WriteLine(ints[i,j]);
}
}
四、数组的基本操作
4.1 如何遍历数组
使用foreach语句可以实现数组的遍历功能,用foreach语句访问数组中的每个元素,而不需要确切的知道每个元素的索引号。
int[] ints = { 100, 200, 300, 400, 500 };
foreach (int item in ints)
{
Console.WriteLine(ints);
}
4.2 删除数组中的元素
int[] ints = { 100, 200, 300, 400, 500 };
Console.WriteLine("请输出要删除的数组的第几个元素");
int index = int.Parse(Console.ReadKey());
for (int i = index; i < ints.Length-index; i++)
{
ints[i] = ints[i + 1];
}
ints[index] = 0;
4.3 冒泡排序
int[] ints = { 200, 100, 300, 400, 500 };
for (int i = 0; i < ints.Length; i++)
{
for (int j = 0; j < ints.Length; j++)
{
if (ints[j]>ints[i])
{
int temp = ints[j];
ints[j] = ints[j + 1];
ints[j + 1] = temp;
}
}
}
4.4 Array类的Sort和Reverse排序方法
Sort方法用于对一维Array数组中的元素进行排序。
int[] ints = { 1, 2, 3, 6, 8, 9, 25, 39 };
Array.Sort(ints);
foreach (int i in ints)
{
Console.WriteLine(i);
}
Reverse方法用于反转一维数组元素的顺序。但是不会进行排序。
(反转从最后一位输出到第一位;反转 不排序)
int[] ints = { 11, 2, 69, 6, 8, 9, 25, 39 };
Array.Reverse(ints);
foreach (int i in ints)
{
Console.WriteLine(i);
}
4.5 合并数组
数组的合并实际上就是将对个一维数组合并成一个一维数组,或者将对个一维数组合并成为一个二维数组或多维数组。
int[] inti = { 1, 2, 3, 4, 5, 6 };
int[] intj = { 7, 8, 9, 10, 11, 12};
int[] intz = new int[inti.Length + intj.Length];
for (int i = 0; i < intz.Length; i++)
{
if (i<inti.Length)
{
intz[i] = inti[i];
}
else
{
intz[i] = intj[i - inti.Length];
}
}
4.6 拆分数组
数组的拆分实际上就是将一个一维数组拆分成多个一维数组,或是将多维数组拆分成多个一维数组或多个多维数组。
int[] array1 = { 1, 2, 3, 4, 5, 6 };
int[] array2 = new int[array1.Length / 2];
int[] array3 = new int[array1.Length / 2];
for (int i = 0; i < array1.Length; i++)
{
if (i<5)
{
array2[i] = array1[i];
}
else
{
array3[i - 5] = array1[i];
}
}