zoukankan      html  css  js  c++  java
  • C# 基础Array

    一、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             }

    交错数组应用代码如下:

     

  • 相关阅读:
    [ jquery 选择器 总览 ] jquery选择器总览
    [ jquery 选择器 :empty ] 此方法选取所有不包含子元素或者文本的空元素
    [ jquery 选择器 :contains(text) ] 此方法选取包含给定文本的元素
    [ jquery 选择器 :header ] 此方法选取匹配如 h1, h2, h3之类的标题元素
    [ jquery 选择器 :last ] 此方法选取jquery对象中的最后一个对象
    [ jquery 选择器 :gt(index) ] 此方法选取匹配大于指定索引值的所有元素
    [ jquery 选择器 :lt(index) ] 此方法选取匹配小于指定索引值的所有元素
    [ jquery 选择器 :eq(index) ] 此方法精确选取指定jquery对象中的指定下角标的对象
    剑指Offer 35 复杂链表的复制 && LeetCode 138 复制带随机指针的链表 哈希
    LeetCode 102. 二叉树的层序遍历 && 剑指 Offer 32
  • 原文地址:https://www.cnblogs.com/tianxuan123/p/7135599.html
Copyright © 2011-2022 走看看