一维数组:
一行N列的表格
数组特点:
1.数组在创建需要指定数组的类型,数组的类型决定数组中列中存储数据的类型。
2.数组中每个列存储的数据都必须是相同的类型。
3.数组在创建时,一定要为其分配列的个数。
4. 数组的定义:
数组的类型[] 数组的名字=new 数组的类型[列的个数];
5.数组中的每个列都有门牌号(下标),从0开始到数组的列数-1
6.向数组存入数据
数组名[下标]=数据;
7.获取数组中的数据
变量类型 变量=数组名[下标];
8.获取数组中列的个数。通过数组变量的Length属性
int 个数 =数组名.Length; //int表示变量能存储整数。
9.利用循环将数组中的所有元素取出。
for(初始变量,循环的条件,变量的步长)
{
代码
}
如:
int[] arr=new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
for(int i=0;i {
int valu=arr[i]; //循环下标获取值
Console.WriteLine(valu);
}
数组:一旦创建,其空间大小无法改变。
如:int[] arr=new int[3]{11,22,33};//若想在arr数组中增加一个44,怎么办?此时就必须使用下列步骤:
1.创建B数组,且A数组的元素空间等于arr.Length+1.
2.将arr数组的所有的数据导入a数组。
3.将新的数据插入到A[arr.Length]
4. arr=A;
如:
int[] arr = new int[3] { 11, 22, 33 };
int[] a = new int[arr.Length + 1];
for (int i = 0; i < arr.Length; i++)
{
a[i] = arr[i]; //遍历arr数组,将arr数组中的数据放入a数组中。
}
a[arr.Length] = 44; //将44放入a数组中最后一个门牌号下。下标都以0开始,所以arr.Length即为最后一个下标。
arr = a; //用a数组将arr数组覆盖掉。
foreach (int read in arr)
{
Console.WriteLine(read);
}
Sort(对数组中的数据进行排序)
public static void Sort ( Array array ):对整个一维 Array中的元素进行排序。
如:
int[] arr=new int[]{11,33,22};
Array.Sort(arr);//一旦进行排序,排序后的数组将替代原数组
foreach(int i in arr)
{
Console.WriteLine(i);//即11,22,33........排序从小到大。可对string,char等数组进行排序。
}
public static void Sort ( Array array, int index, int length ):对一维 Array 中某部分元素进行排序。array指定要排序的一维Array,index指定排序范围的起始索引,length指定排序范围内的元素数。
如:
int[] arr=new int[]{11,33,22,55,44};
Array.Sort(arr,1,3);//从下标为1处开始依次取3个值进行排序。
foreach(int i in arr)
{
Console.WriteLine(i);//即11,22,33,55,44........排序从小到大。可对string,char等数组进行排序。
}
中英文查询转换原理:
string[] ying = new string[] { "brain", "abort", "center", "get" };
string[] han = new string[] { "大脑", "放弃", "中间", "获取" };
//如果要对ying数组排序,han数组必须排序。
Array.Sort(ying,han);//先对ying数组的排序,然后自动调节han数组中的内容。
for (int i = 0; i < ying.Length; i++)
{
Console.WriteLine(ying[i] + "=" + han[i]);
}
如何在数组中查询指定的值?
1.BinarySearch查询
public static int BinarySearch ( Array array, Object value )
array : 类型为int、long、short、char、byte、boolean、float、double、object的数组,注意此数组必须先进行排序。
value : 为和array 相同类型的变量,它用于指定要搜寻的数据。
若查询失败则返回负数。
注:若使用BinarySearch进行查询时,切记必须对数组尽心Sort进行排序。
如:
string[] arr = new string[] { "新浪", "百度", "飞讯", "CSDN" };
Array.Sort(arr); //必须先进行排序,才能进行搜寻。
int d = Array.BinarySearch(arr, "飞讯");
Console.WriteLine(d);
2.IndexOf查询
public static int IndexOf(Array array, Object value):搜索指定的对象,并返回整个一维 Array 中第一个匹配项的索引。array指定要搜索的一维 Array.value指定要在 array 中查找的对象,如果在整个 array 中找到 value 的匹配项,则为第一个匹配项的索引;否则返回-1.
public static int IndexOf ( Array array, Object value, int startIndex ):搜索指定的对象,并返回一维 Array 中从指定索引到最后一个元素这部分元素中第一个匹配项的索引, startIndex 指定搜索的起始索引。如果在 array 中从 startIndex 到最后一个元素这部分元素中第一个与 value 匹配的项的索引;否则返回-1。
public static int IndexOf ( Array array, Object value, int startIndex, int count ) :搜索指定的对象,并返回一维 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引,count 指定要搜索的部分中的元素数。
如:
string[] arr = new string[] { "新浪", "百度", "飞讯", "CSDN" };
//可以不进行排序
int d = Array.BinarySearch(arr, "飞讯");
Console.WriteLine(d);
二维数组:一个N行N列的表格。
声明:
类型[,] 数组名=new 类型[行的元素个数,列的元素个数];
int[,] a=new int[2,3]; 二行三列
赋予数据:
数组名[行,列]=数据
获取数据:
类型 变量名=数组名[行,列];
如:
string[,] arr=new string[2,3];
arr[0,0] = "a";
arr[0,1] = "b";
arr[0,2] = "c";
arr[1,0] = "d";
arr[1,1] = "e";
arr[1,2] = "f";
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
Console.WriteLine(arr[i, j]);
}
}
********************************************
int[,] a = new int[2, 3] { {11,22,33 }, {44,55,66 } }; //括号的添加从外到内,行列的维数从左到右看
int[,] b = new int[3, 4] { {11,22,33,44 }, {55,66,77,88 }, {99,999,999,999 } };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
Console.WriteLine(b[i, j]);
}
}
GetLength(获取数组某一维的元素个数)
public int GetLength ( int dimension ):dimension用于指定要获取数组维数,维数是从零开始表示,返回值指定维中的元素个数。
如:
string[,] arr=new string[2,3];
int num=arr.GetLength(0);//获取数组中第一维的元素个数
Console.WriteLine(num);//即2.
若dimension超过维数索引将会报错。
所以在执行某些不确定的程序代码时,可用try..catch(异常捕获)包括起来。
try
{
//如果在此范围内的代码有异常,程序就跳转到catch中,Exception表示接收所有的错误信息的对象。
string[,] arr=new string[2,3];
int num=arr.GetLength(2);//超出索引。报错。执行catch。
Console.WriteLine(num);//报错。不会执行。
}
catch(Exception e)
{
Console.WriteLine(e);
}
二维数组之锯齿数组(不规则数组)
声明:
类型[][] 数组名=new 类型[行的个数][];
数组名[0]=new 类型[内嵌一维数组的元素个数];
如:
int[][] arr = new int[2][];
a[0] = new int[3] { 11, 22, 33 };
a[1] = new int[2] { 44, 55 };
foreach (int[] fs in arr)
{
foreach (int obj in fs)
{
Console.WriteLine(obj);
}
}
三维数组
声明:
类型[][][] a=new 类型[行的元素个数][][];
a[0]=new 类型[列的个数][];
如:
int[][][] a = new int[2][][];
a[0] = new int[3][];
a[1] = new int[2][];
a[0][0] = new int[] { 11, 22 };
a[0][1] = new int[] { 33, 44 };
a[0][2] = new int[] { 5, 6 };
a[1][0] = new int[] { 77, 88 };
a[1][1] = new int[] { 99 };
Console.WriteLine("第一行第二个列的第一个高的数:"+a[0][1][0]);//第一行第二个列的第一个高的数
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < a[i].Length; j++)
{
for (int u = 0; u < a[i][j].Length; u++)
{
Console.WriteLine(a[i][j][u]);
}
}
}
最近在一个新站点看到的,觉得比较实用,贴上来分享分享。
原文http://www.ffxun.com/content.aspx?id=111&domain=2