C#基础——数组Array、数组API

C#基础——数组Array、数组API

1、数组:按照指定顺序存储指定数量的相同类型的值

声明数组

 // 数组的长度根据存储值的数量进行自动推断
 int[] ints1 = new int[] { 2, 4, 6, 8 };
 //可以简写为
 int[] ints2 = { 2, 4, 6, 8 };
 // 定义数组时,指定数组长度
 int[] ints3 = new int[4] { 2, 4, 6, 8 };
 // 只规定长度,但是不给定初始值,实际存储的内容按类型默认值定义
 int[] ints4 = new int[4];

数组长度 Length

获取数组的长度 => 存储值的数量
数组长度是只读属性
数组的长度默认是不可变的,没有办法直接添加新内容,或移除旧内容

int length = ints1.Length;
Console.WriteLine(length); //4

数组的索引 index

可以通过 索引 index 的概念读写数组中的内容
索引 是数组内位置的编号,从 0 开始
由于索引是数字,需要使用专用的 [index] 的语法
使用索引时不要超出索引范围 [0, Length - 1]
数组内的每一项 item

ints1[0] = 100;
int item0 = ints1[0];
Console.WriteLine(item0);

使用for循环获取数组中的元素

for (int i = 0; i < ints1.Length; i++) {
  // i 作为索引使用,获取数组的每一项
  Console.WriteLine($"索引:{i}, 值:{ints1[i]}");
}

foreach 循环获取数组中的元素

  • foreach循环是一种用于遍历集合或数组元素的迭代控制结构。它提供了一种简洁的方式来遍历集合中的每个元素,而不需要显式地使用索引或迭代器。

语法结构:
foreach (int element in collection)
{
// 循环体代码
}
element:在每次迭代中,element变量将依次代表集合中的每个元素。
collection:要进行遍历的集合或数组。

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
    Console.WriteLine(number); //1 2 3 4 5
}

多维数组

多维数组是一种用于存储具有多个维度的元素的数据结构

// 定义一个 3x3 的二维数组
int[,] matrix = new int[3, 3];

// 初始化二维数组
matrix[0, 0] = 1;
matrix[0, 1] = 2;

// 访问二维数组的元素
int value = matrix[1, 2];
// 定义一个 2x3x4 的三维数组
int[,,] cube = new int[2, 3, 4];

// 初始化三维数组
cube[0, 1, 2] = 5;
cube[1, 2, 3] = 10;

// 访问三维数组的元素
int value = cube[0, 1, 2];
 // 数组嵌套数组,嵌套的数组长度要保持一致
 int[,] ints = {
   { 0, 1 },
   { 2, 3 },
   { 4, 5 }
 };
 Console.WriteLine(ints.Length); // 所有元素的总数 6
 int d = ints.GetLength(0);      // 获取指定维度的长度
 Console.WriteLine(d);
 
 // 读写多维数组的值
 ints[1, 1] = 100;
 Console.WriteLine(ints[1, 1]);

交错数组

由多个一维数组组成的数组,每个一维数组的长度可以不同

// 数组内嵌套的数组允许长度不一致
int[][] ints5 = {
  new int[] { 1, 2 },
  new int[] { 1, 2, 3 }
};
Console.WriteLine(ints5[0][0]);

2、数组API

Clear 清除数组元素

第一个参数是数组名字
第二个参数是开始清除的索引(包含这个索引)
第三个参数是清除的个数(注意:这里的清除是把元素替换成0)

int[] arr = { 1, 2, 3, 4, 5, 6 };
Array.Clear(arr, 1, 2);
foreach (int i in arr) {
  Console.WriteLine(i); // 1 0 0 4 5 6 
}

IndexOf 查找数组的索引

第一个索引是需要查找的数组名
第二个索引是需要查找的元素(查找的是这个数组中第一次出现的索引)
如果有这个元素就会返回这个元素的索引,如果没有则返回 - 1

int[] arr = { 1, 2, 3, 3, 4, 5, 6 };
Console.WriteLine(Array.IndexOf(arr, 0)); // -1
Console.WriteLine(Array.IndexOf(arr, 3)); // 2

LastIndexOf 从数组末尾开始查找指定元素在数组中的索引。

第一个索引是需要查找的数组名
第二个索引是需要查找的元素(查找的是这个数组中最后一次出现的元素)
如果有这个元素就会返回这个元素的索引,如果没有则返回 - 1

int[] arr = { 1, 2, 3, 3, 4, 5, 6 };
Console.WriteLine(Array.IndexOf(arr, 0)); // -1
Console.WriteLine(Array.IndexOf(arr, 3)); // 3

Reverse 数组反转

反转数组元素的顺序
参数是需要反转的数组名

int[] arr = { 1, 2, 3, 4, 5, 6 };
Array.Reverse(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 6 5 4 3 2 1
}

Sort 数组排序

将数组元素进行升序排列
参数是需要排序的数组名

int[] arr = { 1, 6, 5, 2, 3, 4 };
Array.Sort(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 1 2 3 4 5 6
}
//如果需要降序排序可以使用Reverse方法来反转数组中元素的顺序
Array.Reverse(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 6 5 4 3 2 1
}

注意:Sort方法和Reverse方法会直接修改原始数组,并且没有返回值

你可能感兴趣的:(c#,算法)