C#基礎——陣列
陣列
一、什麼是陣列
陣列是包含若干個相同型別的變數,這些變數都可以通過索引(從0開始)進行訪問。陣列中的變數稱為陣列的元素,陣列能夠容納元素的數量稱為陣列的長度。陣列中的每個元素都具有唯一的索引與其相對應。
陣列是通過指定陣列的元素型別,陣列的維數及陣列每個維度的上限和下限來定義的,即一個數組的定義需要包含以下幾個要素。
元素型別。
陣列的維數。
每個維數的上下限。
陣列的元素表示某一種確定的型別,如整數或字串等。那麼陣列的確切含義是什麼呢?陣列型別的值是物件,陣列物件被定義為儲存陣列元素型別的一系列位置。也就是說,陣列是一個儲存一系列元素位置的物件。陣列中儲存位置的數量由陣列的下標和長度來確定。
陣列型別是從抽象型別Array派生的引用型別,通過new運算子建立陣列並將陣列元素初始化為它們的預設值。陣列可以分為一維陣列,二維陣列和多維陣列等。
(陣列最大的問題就是長度的限制;數值裡面所儲存的資訊型別全部都是一致的。)
二、一維陣列
一維陣列即陣列的維數為1。一維陣列就好比一個大型的零件生成公司,而公司中的各個車間(如車間1,車間2,車間3等,這些名詞相當於陣列中的索引號)就相當於一維陣列中的各個元素,這些車間既可以單獨使用,也可以一起使用。
2.1 陣列定義
資料型別[] 陣列名=new 資料型別[陣列長度];
//資料型別[]陣列的名稱=new陣列型別[陣列的長度] //ints的陣列的元素型別是int元素的個數(長度)為5 int[] ints = new int[5]; //給每個元素賦值 ints[0] = 10; ints[1] = 20; ints[2] = 30; ints[3] = 40; ints[4] = 50; //輸出元素 //i實際上就已經變成了陣列的下標 for (int i = 0; i < ints.Length; i++) { Console.WriteLine(ints[i]); } Console.ReadKey();
資料型別[] 陣列名={值1,值2,值3,值4};
//由初始化的值來決定陣列的長度
int[] ints = { 1, 2, 3, 4, 5, 6 };
Console.WriteLine("長度為:{0}",ints.Length);
foreach (int i in ints)
{
Console.WriteLine(i);
}
Console.ReadKey();
三、二維陣列
二維陣列即陣列的維數為2,它相當於一個表格。
3.1 陣列的定義
資料型別[,] 陣列名=new 資料型別[數值1,數值2];
資料型別[,] 陣列名=new 資料型別[,]{{值1,值2},{值1,值2},{值1,值2}};
int[,] ints = new int[3, 2];
//迴圈賦值
for (int i = 0; i < ints.Length/2; i++)
{
for (int j = 0; j < ints.Length/3; j++)
{
ints[i, j] = 10;
}
}
for (int i = 0; i < ints.Length / 2; i++)
{
for (int j = 0; j < ints.Length / 3; j++)
{
Console.WriteLine(ints[i,j]);
}
}
四、陣列的基本操作
4.1 如何遍歷陣列
使用foreach語句可以實現陣列的遍歷功能,用foreach語句訪問陣列中的每個元素,而不需要確切的知道每個元素的索引號。
int[] ints = { 100, 200, 300, 400, 500 };
foreach (int item in ints)
{
Console.WriteLine(ints);
}
4.2 刪除陣列中的元素
int[] ints = { 100, 200, 300, 400, 500 };
Console.WriteLine("請輸出要刪除的陣列的第幾個元素");
int index = int.Parse(Console.ReadKey());
for (int i = index; i < ints.Length-index; i++)
{
ints[i] = ints[i + 1];
}
ints[index] = 0;
4.3 氣泡排序
int[] ints = { 200, 100, 300, 400, 500 };
for (int i = 0; i < ints.Length; i++)
{
for (int j = 0; j < ints.Length; j++)
{
if (ints[j]>ints[i])
{
int temp = ints[j];
ints[j] = ints[j + 1];
ints[j + 1] = temp;
}
}
}
4.4 Array類的Sort和Reverse排序方法
Sort方法用於對一維Array陣列中的元素進行排序。
int[] ints = { 1, 2, 3, 6, 8, 9, 25, 39 };
Array.Sort(ints);
foreach (int i in ints)
{
Console.WriteLine(i);
}
Reverse方法用於反轉一維陣列元素的順序。但是不會進行排序。
(反轉從最後一位輸出到第一位;反轉 不排序)
int[] ints = { 11, 2, 69, 6, 8, 9, 25, 39 };
Array.Reverse(ints);
foreach (int i in ints)
{
Console.WriteLine(i);
}
4.5 合併陣列
陣列的合併實際上就是將對個一維數組合併成一個一維陣列,或者將對個一維數組合併成為一個二維陣列或多維陣列。
int[] inti = { 1, 2, 3, 4, 5, 6 };
int[] intj = { 7, 8, 9, 10, 11, 12};
int[] intz = new int[inti.Length + intj.Length];
for (int i = 0; i < intz.Length; i++)
{
if (i<inti.Length)
{
intz[i] = inti[i];
}
else
{
intz[i] = intj[i - inti.Length];
}
}
4.6 拆分陣列
陣列的拆分實際上就是將一個一維陣列拆分成多個一維陣列,或是將多維陣列拆分成多個一維陣列或多個多維陣列。
int[] array1 = { 1, 2, 3, 4, 5, 6 };
int[] array2 = new int[array1.Length / 2];
int[] array3 = new int[array1.Length / 2];
for (int i = 0; i < array1.Length; i++)
{
if (i<5)
{
array2[i] = array1[i];
}
else
{
array3[i - 5] = array1[i];
}
}