前言
我们先前已经进行了枚举的学习,但其实枚举相对来说,设计到的计算逻辑比较少,大多数时候都是和switch一起进行分支判断,而且屏幕前的你应该也发现了,这玩意儿其实更多就是一个编码规范的学习。
但今天我们要开始学习的数组:一维数组,多维数组,交错数组,这些在你日后的算法学习中也会经常出现。
所以希望大家跟紧我的脚步,把这个知识点理解透彻。
数组有很多作用,以下是其中一些常见的作用:
-
存储和访问数据:数组可以用来存储一组数据项,并且可以通过索引来访问和操作这些数据项。数组的索引从0开始,可以直接访问数组中的任意一个元素。
-
快速查找:由于数组中的元素是按照固定位置存储的,因此可以通过索引快速定位到需要的元素,从而实现快速的查找操作。
-
排序和搜索:可以使用数组来实现排序和搜索算法,例如冒泡排序、快速排序、二分搜索等。
-
存储多个对象:数组可以存储多个对象,例如存储一组学生对象或者一组商品对象。
-
传递参数:可以将数组作为参数传递给函数或方法,以便在不同的上下文中共享和处理数据。
-
实现其他数据结构:许多其他数据结构,如栈、队列、链表等,都可以通过数组来实现。
总而言之,数组是一种非常基础且常用的数据结构,它可以在编程中起到很多方面的作用,使得数据的存储、操作和处理更加方便和高效。
基本概念
数组是存储异族相同类型数据的集合,而在实际开发中,一维数组简称为数组。
数组的声明
数组的声明本身有很多种形式,这里博主就带大家一起了解一下。
1.变量类型【】 数组名
cs
int[] arr1;//相当于没有实际占用空间,只是声明了一个变量,具体存储多少和存储了什么并不知道
2.变量类型【】数组名=new 变量类型【数组长度】
cs
int[] arr2=new int[5];//相当于用零占用了五个空间
这里如果声明了长度,c#会默认放0去实现占位,这也是计算机识别空间的一种手段,如果什么都不放,计算机怎么知道这里面有几个东西,又有多长呢。
3.变量类型【】数组名=new 变量类型【数组长度】{内容1,内容2...}
cs
int[] arr3=new int[5]{1,2,3,4,5};
这种方式,其实相当于就是决定了空间中占位的元素,这个元素必须要和前面类型保持一致。
4.变量类型【】数组名=new 变量类型【】{内容1,内容2...}
cs
int[] arr4=new int[]{1,2,3,4,};
这种写法其实就是让后面的元素来决定这个数组存储的长度,相当于第三种写法的一种省略。
5.变量类型【】数组名={内容1,内容2...}
cs
int[] arr5={1,2,3}
显然,这是最方便的一种写法,也是比较常用的写法。
看完这五种写法,想毕你应该已经知道数组如何声明了,这些东西还是希望大家要牢记,基础一直都是重中之重。
接下来我们就来讲怎么用它
数组的使用
用它,就要先得到它。
获取数组的长度
cs
Console.Writeline(arr.Length);
关键字:数组名.Length
获取数组中的具体元素
cs
Console.Writeline(arr[0]);
[数字],我们一般叫下标,里面的数字就是索引。
数组的下标和索引是用来标识和访问数组中元素的方式。
数组下标是从0开始的整数,用来表示数组中元素的位置。例如,对于一个有5个元素的数组,它们的下标分别是0, 1, 2, 3, 4。通过使用数组下标,我们可以根据下标的值来访问数组中的元素,比如数组名[下标]的方式。
数组索引是用来表示数组中元素相对于数组起始位置的偏移量。索引也是从0开始的,和下标的概念是一样的。通过使用数组索引,可以像下标一样来访问数组中的元素,也就是数组名[索引]的方式。
所以,语法为:数组名[索引值]。
修改元素
直接赋值即可
cs
arr[0]=99;
遍历数组(for循环)
下面是一个使用for循环遍历数组示例:
cs
using System;
class Program
{
static void Main(string[] args)
{
// 创建一个整数数组
int[] numbers = { 1, 2, 3, 4, 5 };
// 使用for循环遍历数组
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
}
}
以上代码创建了一个整数数组 numbers
,然后使用 for
循环遍历数组并将数组元素打印到控制台上。输出结果将会是:
1
2
3
4
5
其实遍历不难,因为一维数组本身思考量并不高。
增加和删除元素
重点:c#中数组初始化以后是不能够直接添加新的元素的!
所以我们增加元素的根本就是,用一个新数组去替换旧的数组
cs
using System;
class Program
{
static void Main(string[] args)
{
// 创建两个个整数数组
int[] arr1 = new int[5] { 1,2,3,4,5};
int[] arr2 = new int[6] ;
// 使用for循环遍历数组
for (int i = 0; i < arr1.Length; i++)
{
arr2[i] = arr1[i];
}
arr1 = arr2;
arr1[5] = 3;
for (int i = 0; i < arr1.Length; i++)
{
Console.WriteLine(arr1[i]);
}
}
}
你可能会疑惑,博主,这不是麻烦了吗?我直接用一个新数组存储了旧数组,然后再加一个元素不是一样的吗?当然,你是对的,但是这也体现的我们开头说的原则。博主这里带着你这样绕着弯子写的目的其实就是让你感受一下我刚刚提到的重点。
那你既然体验了增加元素是如何运作的,删除其实也是一样的道理,只是是用更短的数组去存储罢了。
查找指定元素
其实你到这里应该也能想到具体如何操作,其实就是配合if进行。
这里不说废话,我们直接进例子。
cs
using System;
class Program
{
static void Main(string[] args)
{
// 创建一个整数数组
int[] arr1 = new int[5] { 1,2,3,4,5};
int a =3//创建一个目标值
// 使用for循环遍历数组
for (int i = 0; i < arr1.Length; i++)
{
if(arr1[i]==a)
{
Console.Writeline("{0}",i);
break;
}
}
}
}
总结
其实到这里,我们关于一维数组的知识点就全部讲完了,你也发现博主讲一个数据类型的思路,其实就是从概念,到声明,再到使用,而使用中,其实就是五个过程,得,改,遍历,增,删,查。
日后我们进行其他复杂数据结构地讲解时,大抵也是这样的套路。
希望这篇对数组讲解的文章对你有帮助。
还是那句话,学习基础,戒骄戒躁,脚踏实地。
共勉。
请期待我的下一篇博文!