//一维数组的定义和元素遍历访问:数组必须在访问前初始化,初始化有两种方式,
int[] intArray1 = new int[3];//方法1:指定数组的大小(此处可用变量),使用new初始化所有数组元素,默认值为0
int[] intArray2 = { 1, 2, 3 };//方法2:以字面形式指定数组的完整内容
int[] intArray3;
intArray3 = new int[4];//此时也可以,先定义,使用时再进行初始化
//遍历一维数组方法1
for (int i = 0; i < intArray2.Length; i++)
{
Console.WriteLine("intArray2的第{0}个元素是{1}", i + 1, intArray2[i]);
}
//遍历一维数组方法2
foreach (int i in intArray2)
{
Console.WriteLine("{0}", i);
}
//多维数组的定义和访问
int[,] intArray4 = new int[3, 4];//定义一个3*4的二维int数组
int[,] intArray5 = { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 }, { 4, 5, 6 } };//定义一个4*3的二维int数组
//遍历二维数组方法1
//GetLowerBound(0)获取指定维度的下限 GetUpperBound(0)获取指定维度的上限
//GetValue(1,1),获取指定的二维数组的值
for (int i = intArray5.GetLowerBound(0); i <= intArray5.GetUpperBound(0); i++)
{
for (int j = intArray5.GetLowerBound(1); j <= intArray5.GetUpperBound(1); j++)
{
Console.WriteLine("intArray5的第{0}组第{1}个元素是{2}", i + 1, j + 1, intArray5.GetValue(i, j));
}
}
//遍历二维数组方法2
//GetLength(0)获取指定维度的长度
for (int i = 0; i < intArray5.GetLength(0); i++)
{
for (int j = 0; j < intArray5.GetLength(1); j++)
{
Console.WriteLine("intArray5的第{0}组第{1}个元素是{2}", i + 1, j + 1, intArray5.GetValue(i, j));
}
}
//遍历二维数组方法3 将所有元素一一遍历出
foreach (int i in intArray5)
{
Console.WriteLine("intArray5的元素是{0}", i);
}
//交错数组的定义和访问
//定义方法1
int[][] intArray6 = new int[4][];
intArray6[0] = new int[3];
intArray6[1] = new int[3];
intArray6[2] = new int[3];
intArray6[3] = new int[3];//此时实现的数组和上面的多维数组一样,但交错数组允许里面的数组元素不同。
//定义方法2
int[][] intArray7 = { new int[] { 1, 2 }, new int[] { 2, 3, 4 }, new int[] { 3 }, new int[] { 4, 5, 6, 7 } };
//遍历方法
for (int i = 0; i < intArray7.Length; i++)
{
for (int j = 0; j < intArray7[i].Length; j++)
{
Console.WriteLine("intArray7的第{0}组第{1}个元素是{2}", i + 1, j + 1, intArray7[i][j]);
}
}
//数组的排序
//利用Sort方法排序,由小到大
int[] intArray = { 2, 8, 5, 4, 6 };
Array.Sort(intArray);
foreach (int i in intArray)
{
Console.WriteLine("{0}", i);
}
//利用关键字排序
int[] intArray1 = { 5, 3, 2, 4, 1 };//关键字数组
string[] strArray = { "王五", "张三", "郑二", "李四", "于大" };
Array.Sort(intArray1, strArray);//将strarray的元素与intarray1中元素一一对应,然后按intarray1中元素整体排序
for (int i = 0; i < intArray1.Length; i++)
{
Console.WriteLine("{0}->{1}", intArray1[i], strArray[i]);
}
//利用BinarySearch方法搜索元素,返回所搜索元素的下标,如果重复返回第一个
//定义数组
int[] myArr = { 1, 2, 3, 4, 5 };
//搜索
int target = 3;
int result = Array.BinarySearch(myArr, target); //2
Console.WriteLine("{0}的下标为{1}", target, result); //2
//判断包含
bool result1 = myArr.Contains(target);
Console.WriteLine("myArr中是否包含{0}:{1}", target, result1);
//复制数组
//copy
int[] copymyArr = new int[3];
Array.Copy(myArr, copymyArr, 3);//将myArr中前3个元素复制给copymyArr
foreach (int i in copymyArr)
{
Console.WriteLine("{0}", i);
}
//利用CopyTo复制数组
int[] copytomyArr = new int[7];
myArr.CopyTo(copytomyArr, 2);//将myArr复制给copytomyArr,从第三个元素开始
foreach (int i in copytomyArr)
{
Console.WriteLine("{0}", i);
}
//利用Reverse方法反转数组
int[] myArr1 = { 1, 2, 3, 4, 5 };
Array.Reverse(myArr1);
foreach (int i in myArr1)
{
Console.WriteLine("{0}", i);
}
//利用createInstance创建动态数组
int length = 5;
Array arr = Array.CreateInstance(Type.GetType("System.Int32"), length);
Random r = new Random(); //声明一个随机数对象
//循环赋值、输出
for (int i = 0; i < arr.Length; i++)
{
int j = r.Next(100);
arr.SetValue(j, i);//用1~100的随即数赋值
Console.WriteLine("arr[{0}]={1}", i,arr.GetValue(i));
}