C# 基礎Array
阿新 • • 發佈:2017-07-12
oid adl args tel 隨機生成 連續 創建 item adr
一、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 usingSystem.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 }
交錯數組應用代碼如下:
C# 基礎Array