一、Array的作用
连续定义多个相同类型的变量,比如我定义1000个学生的学生年龄,int[] age = new int[1000];不需要慢慢的一个一个变量的定义,数组是不是很方便。
需要注意的:1)Array是引用类型。引用类型是传递栈中的地址。2)数组都是由连续的内存位置组成的。
二、Array定义与赋值
1)先定义再赋值比如:
1 //定义100个学生的成绩 2 //第一种定义并初始化方式 3 int[] studentSorce = new int[100]; 4 studentSorce[0] = 78; 5 studentSorce[1] = 95; 6 //第二种定义并初始化方式 7 int[] studentSorce02 = new int[5]{78,95,84,76,59}; 8 //第三种定义并初始化方式 9 int[] studentSorce03 = new int[] { 78, 95, 84, 76, 59 }; 10 //第四种定义并初始化方式 11 int[] studentSorce04 = { 78, 95, 84, 76, 59 }; 12 //二维定义方式 13 int[,] arr = new int[3, 4]; 14 //二维定义并赋值,3行4列 15 int[,] arr02 = new int[3, 4] { { 75,96,83,65 }, { 78, 95, 84, 76 },{86,66,73,77} };
2)二维数组遍历
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ArrayTest 8 { 9 10 class Program 11 { 12 public static int[,] array2D; //定义二维数组,没赋值数组长度 13 14 /// <summary> 15 /// 随机生成二维数组 16 /// </summary> 17 /// <param name="rows">一维(行)</param> 18 /// <param name="columns">二维(列)</param> 19 public static void RaArray2D(int rows, int columns) 20 { 21 Random ra = new Random(); 22 array2D = new int[rows, columns]; 23 for (int i = 0; i < array2D.GetLength(0); i++) 24 { 25 for (int j = 0; j < array2D.GetLength(1); j++) 26 { 27 array2D[i, j] = ra.Next(10, 101); //范围10-100的随机数 28 } 29 } 30 } 31 /// <summary> 32 /// 遍历二维数组 33 /// </summary> 34 /// <param name="arr2D">二维数组</param> 35 public static void EachArray2D(int[,] arr2D) 36 { 37 for (int i = 0; i < arr2D.GetLength(0); i++) 38 { 39 for (int j = 0; j < arr2D.GetLength(1); j++) 40 { 41 Console.Write(arr2D[i, j].ToString().PadRight(4, ‘\u0000‘)); 42 } 43 Console.WriteLine(); 44 } 45 } 46 47 static void Main(string[] args) 48 { 49 RaArray2D(5, 10); 50 EachArray2D(array2D); 51 52 Console.WriteLine(array2D.Length);//显示二维数组总长度. 53 Console.WriteLine(array2D.Rank); //数组维度 54 55 Console.ReadKey(); 56 57 } 58 59 } 60 }
3)数组初始化的值,代码 int[] studentSorce = new int[5]; 我们进行两步创建。
int[] x; //定义int[]的数组,没有赋值. x = new int[5]; //赋值后x[0]...x[4]初值0
这样我们就可以在类中定义数组,然后在方法中赋值。如下
public static int[] newArr; //在类中定义,然后在方法中赋值。估计可行。
三、Array常用方法
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ArrayTest 8 { 9 10 class Program 11 { 12 public static int[] array1D; //声明array1D变量,该变量的类型为int[] 13 /// <summary> 14 /// 随机生成一维数组 15 /// </summary> 16 /// <param name="number">表示数组的长度</param> 17 public static void RaArray(int number) 18 { 19 array1D = new int[number]; //创建了一个数组,将数组的地址赋值给array1D 20 Random ra = new Random(); 21 for (int i = 0; i < array1D.Length; i++) 22 { 23 array1D[i] = ra.Next(30, 101); //随机范围30-100 24 } 25 } 26 /// <summary> 27 /// 遍历数组方法 28 /// </summary> 29 public static void EachArray() 30 { 31 for (int i = 0; i < array1D.Length; i++) 32 { 33 Console.Write(array1D[i].ToString().PadRight(4, ‘\u0000‘)); 34 } 35 } 36 37 38 static void Main(string[] args) 39 { 40 RaArray(10); //生成随机数组方法 41 EachArray(); //遍历数组的方法 42 //下面介绍一些数组的方法 43 Console.WriteLine(); //换行 44 Array.Sort(array1D); //排序由小到大 45 EachArray(); 46 Console.WriteLine(); //换行 47 Array.Reverse(array1D); //数组元素反转 48 EachArray(); 49 Console.WriteLine(); //换行 50 int max = array1D.Max(); 51 int min = array1D.Min(); 52 int sum = array1D.Sum(); 53 double avg = array1D.Average(); 54 Console.WriteLine("array1D数组的最大值:{0},最小值:{1},和:{2},平均值:{3}", max, min, sum, avg); 55 Console.WriteLine(); //换行 56 Console.WriteLine("输入要查询的数字"); 57 int chaXun = int.Parse(Console.ReadLine()); 58 bool isContains = array1D.Contains(chaXun); //查询数组是否包含指定数,返回bool 59 Console.WriteLine(isContains); 60 Console.WriteLine(); 61 int[] newArray1d = new int[array1D.Length]; 62 array1D.CopyTo(newArray1d, 0); //将array1D的所有元素复制给newArray1D 63 for (int i = 0; i < newArray1d.Length; i++) 64 { 65 Console.Write(newArray1d[i].ToString().PadRight(4, ‘\u0000‘)); 66 } 67 Console.WriteLine("输入数字,检索第一次出现的索引值"); 68 int number = int.Parse(Console.ReadLine()); 69 int firstIndex = Array.IndexOf(array1D, number); //搜索array1D中第一次出现指定值的索引值 70 int laseIndex = Array.LastIndexOf(array1D, number); //最后一次出现的索引值. 71 72 Console.WriteLine("搜索第一次出现{0}位置索引号为:{1},最后一次出现的索引号为{2}", number, firstIndex, laseIndex); 73 74 Console.WriteLine(Array.Find(array1D, item => item > 5)); //数组中第一个大于5的数字 75 Console.WriteLine(Array.FindLast(array1D, items => items < 90)); //检索数组最后一个大于90的值并输出 76 foreach (int item in Array.FindAll(array1D,item=>item>50)) //遍历所有大于50的值 77 { 78 Console.Write("大于50的有{0}", item); 79 } 80 Console.WriteLine(); //换行 81 //第一个大于50的索引值,和最后一个大于50的索引值 82 Console.WriteLine("第一个大于50的索引是:{0},最后大于50的是{1}", Array.FindIndex(array1D, item => item > 50), Array.FindLastIndex(array1D, item => item > 50)); 83 Console.ReadKey(); 84 } 85 86 } 87 }
四、交错数组
交错数组:每行元素个数不想等的二维数组。有时也称“数组的数组”,定义、初始化、遍历如下代码:
1 //交错数组,定义与初始化 2 int[][] interleavedArray = new int[4][]; 3 interleavedArray[0] = new int[4] { 17, 14, 36, 43 };//第一行4个元素 4 interleavedArray[1] = new int[] { 77, 34 }; //第二行2个元素 5 interleavedArray[2] = new int[3] { 55, 76, 89 }; 6 interleavedArray[3] = new int[6] { 33, 23, 56, 75, 46, 52 }; 7 //遍历交错数组 8 //先测试下交错数组1维长度(行) 9 Console.WriteLine(interleavedArray.GetLength(0)); //第一种方法,获取第一维长度 10 Console.WriteLine(interleavedArray.Length); //推荐使用,获取第一维长度.标准用法 11 Console.WriteLine(interleavedArray[0].Length); //(第一行有多少列) 12 Console.WriteLine(interleavedArray[1].Length); //第二行有多少列 13 //下面遍历的问题就容易了 14 Console.ForegroundColor = ConsoleColor.Cyan; 15 16 for (int i = 0; i < interleavedArray.Length; i++) //行,一维 17 { 18 for (int j = 0; j < interleavedArray[i].Length; j++) //列,二维 19 { 20 Console.Write(interleavedArray[i][j].ToString().PadRight(4, ‘ ‘)); 21 } 22 Console.WriteLine(); 23 }
交错数组应用代码如下:
时间: 2024-10-28 14:41:50