什么是数组?那数组又是怎么运用的呢?接下来,我来揭开谜底。
我们把能够存放任意多个同类型的数据的组合叫做数组。也可以说数组是由多个数组项组成,每个数组项的类型相同,并且每个数组项对应1个编号,这些编号叫做数组的索引,也称为下标。数组的数组项的编号都是从0开始,依次为数组项编号。
数组声明的表达式为:数据类型[ ] 变量名 ;数组赋值表达式为:变量名=new 数据类型[ 长度] [长度]是int类型 ,赋值的数据类型必须与声明的数据类型一致。
注意:一个数组创建后,它每个数组项的值,为数组项类型的默认值:数字类型,默认值为0;bool类型,默认值为false;char类型,默认值为转义符(\0.表示空字符);string类型,默认值为null,表示“空”。
数组的读取:变量名[索引],从指定数组中,通过编号取出某一个数组项的值,返回类型与数组项类型相同。
比如:int[ ] numbers=new int[5]; 意思就是,定义了一个number变量,它是一个数组,可以存放5个int类型的数据。
数组的修改:表达式为 变量名[索引]=值;
代码示例:
int [ ] number=new int(5);
numbers[0]=3;
numbers[5]=-2;
numbers[3]=numbers[0]*2+numbers[1];
console.writeline(numbers[3]);
运行结果为 4
注:如果索引超出数组长度,则为索引越界,货、或下标越界。
读取数组的长度:变量名.Length 返回类型为int;
代码示例:
int [ ] numbers=new int[5];
numbers[0]=3;
numbers[5]=-2;
numbers[3]=numbers[0]*2+numbers[1];
console.writeline(numbers[3]);
console.writeline(numbers.Length);
运行结果为
4
5
除了以上方式,我们还可以用另外一种方式来编写代码,并且代码量也会减少,那就是数组的初始化器。
数组的初始化器表达式为:变量名=new 数据类型[长度]{元素1,元素2,元素3……元素n}.
数组有一个特性,那就是数组的定长性。表示为一个数组在常见之后,它的长度固定不变。
比如说:
代码示例:
int[] nums=new int(5);
nums=new int[6];
定义了一个数组长度,定义为5;又重新建立了一个长度为6的数组,丢掉了原来的数组,长度并没有发生变化。
我们在写代码的时候,我们可能会有重复的行为,重复的动作,我们为了减少代码的编写量,也减少代码的错误,我们可以使用数组的遍历来达到同样的效果。
案例:有一个数组,变量名为arrays,请输出该数组每一项的值
重复的行为:输出一个数组项;
数组的交换排序:1、冒泡排序,有两种思路:将最大的数沉到底部,将最小的数冒到顶部:
for (int i = nums.Length - 1; i > 0; i--)
{
//在 0-i 范围内,将该范围内最大的数字沉到i
for (int j = 0; j < i; j++)
{
if (nums[j] > nums[j+1])
{
//交换
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
for(int i=0;i<=arrays.Length-1;i++)
{
Console.WriteLine(arrays[i]);
}
说明:要实现数字的遍历,可以使用循环
循环变量从0开始,依次取到数组的最大下标(数组的长度-1)
在循环体中,使用循环变量作为下标,即可取出数组每一项的值。
2、选择排序:首先找到 i - (nums.Length-1) 范围内的最小数所在的下标,假设找到的下标保存到变量index中,然后将nums[i]和nums[index]的值交换
for (int i = 0; i < nums.Length - 1; i++)
{
//在 i-(nums.Length-1) 范围内,将该范围内最小的数字提到i ;//1. 首先找到 i - (nums.Length-1) 范围内的最小数所在的下标
int index = i; //先假设最小数的下标是i
for (int j = i + 1; j < nums.Length; j++)
{
if (nums[j] < nums[index])
{
//发现了更小的数
index = j;//记录下标
}
}
//2. 然后将nums[i]和nums[index]的值交换
int temp = nums[i];
nums[i] = nums[index];
nums[index] = temp;
}
来源:https://www.cnblogs.com/8023rumber/p/7787546.html