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 int[4, 2];
//声明一个3页,5行,2列的3维数组
int[,,] myArray_3 = new int[3, 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 };