1. 程式人生 > >五、C#入門基礎05(陣列)

五、C#入門基礎05(陣列)

一、什麼是陣列?

陣列是包含若干個相同型別的變數,這些變數都可以通過索引(從0開始)進行訪問。陣列中的變數稱為陣列的元素,陣列能夠容納元素的數量稱為陣列的長度。陣列中的每個元素都具有唯一的索引與其相對應。
陣列是通過指定陣列的元素型別,陣列的維數及陣列每個維度的上限和下限來定義的,即一個數組的定義需要包含以下幾個要素。
元素型別。
陣列的維數。
每個維數的上下限。
陣列的元素表示某一種確定的型別,如整數或字串等。那麼陣列的確切含義是什麼呢?陣列型別的值是物件,陣列物件被定義為儲存陣列元素型別的一系列位置。也就是說,陣列是一個儲存一系列元素位置的物件。陣列中儲存位置的數量由陣列的下標和長度來確定。
陣列型別是從抽象型別Array派生的引用型別,通過new運算子建立陣列並將陣列元素初始化為它們的預設值。陣列可以分為一維陣列,二維陣列和多維陣列等。

二、什麼是一維陣列?

一維陣列即陣列的維數為1。一維陣列就好比一個大型的零件生成公司,而公司中的各個車間(如車間1,車間2,車間3等,這些名詞相當於陣列中的索引號)就相當於一維陣列中的各個元素,這些車間既可以單獨使用,也可以一起使用。

2.1 陣列定義
資料型別[] 陣列名=new 資料型別[陣列長度];
資料型別[] 陣列名={值1,值2,值3,值4};

三、什麼是二維陣列?

二維陣列即陣列的維數為2,它相當於一個表格。

3.1 陣列的定義
資料型別[,] 陣列名=new 資料型別[數值1,數值2];
資料型別[,] 陣列名=new 資料型別[,]{{值1,值2},{值1,值2},{值1,值2}};

四、陣列的基本操作?

4.1 如何遍歷陣列
使用foreach語句可以實現陣列的遍歷功能,用foreach語句訪問陣列中的每個元素,而不需要確切的知道每個元素的索引號。
這裡寫圖片描述

4.2 刪除陣列中的元素
這裡寫圖片描述

4.3 氣泡排序
這裡寫圖片描述

4.4 Array類的Sort和Reverse排序方法
Sort方法用於對一維Array陣列中的元素進行排序。
Reverse方法用於反轉一維陣列元素的順序。但是不會進行排序。

4.5 合併陣列
陣列的合併實際上就是將對個一維數組合併成一個一維陣列,或者將對個一維數組合併成為一個二維陣列或多維陣列。
這裡寫圖片描述

4.6 拆分陣列
陣列的拆分實際上就是將一個一維陣列拆分成多個一維陣列,或是將多維陣列拆分成多個一維陣列或多個多維陣列。
這裡寫圖片描述

五、程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _05
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 一維陣列
            //陣列有一個最大的問題,有長度的限制
            //數組裡面所儲存的資訊的型別  全部都是一致的
            //資料型別[] 陣列名=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]);
            //}

            //foreach(元素資料型別 元素變數名 in 陣列名稱/集合名稱)
            //直接獲取到元素   (只針對陣列不可以修改,物件是可以修改的)
            //foreach 只能夠用於讀取資料 只讀
            //CRUD
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //for (int i = 0; i < ints.Length; i++)
            //{
            //    if (ints[i]==40)
            //    {
            //        ints[i] = 0;
            //    }
            //}
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //陣列第二種定義的方法:
            //int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            //Console.WriteLine("長度為:{0}",ints.Length);
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();
            #endregion

            #region 二維陣列 
            //length:是得到行和列的總個數
            //你要求出行就除去列,要求出列就除去行
            //二維陣列的定義:
            //int[,] ints = new int[3,2];
            //單個賦值:
            //ints[0, 0] = 10;
            //ints[0, 1] = 20;
            //ints[1, 0] = 30;
            //ints[1, 1] = 40;
            //ints[2, 0] = 50;
            //ints[2, 1] = 60;
            //迴圈賦值
            //for (int i = 0; i < ints.Length/2; i++)
            //{
            //    for (int j = 0; j < ints.Length/3; j++)
            //    {
            //        ints[i, j] = 10;
            //    }
            //}

            //取值1:
            //for(int i = 0; i < ints.Length / 2; i++)
            //{
            //    for (int j = 0; j < ints.Length / 3; j++)
            //    {
            //        Console.WriteLine(ints[i,j]);
            //    }
            //}

            //取值2:
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();

            #endregion

            #region 刪除陣列中的元素 =0 =""
            //Console.WriteLine("請輸入要刪除的陣列元素的位數:");
            // -1 為了得到要刪除的陣列的元素的下標
            //int index = int.Parse(Console.ReadLine())-1;
            //int [] ints={1,2,3,4,5,6,7,8,9,10 };
            //for (int i = index; i < ints.Length-1; i++)
            //{
            //    ints[i] = ints[i + 1];
            //}
            //ints[ints.Length-1] = 0;
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region 氣泡排序是所有演算法裡面最最最最最最最垃圾的 兩兩比較 前後比較
            //快速排序  紅黑樹排序 左旋 或者 右旋   二叉樹排序(高等數學 幾何)
            //int[] ints = {1,2,9,4,5,3,8,7,6};
            //for (int i = 0; i < ints.Length-1; i++)
            //{
            //    for (int j = 0; j < ints.Length-1-i; j++)
            //    {
            //        if (ints[j]>ints[j+1])
            //        {
            //            int temp = ints[j];
            //            ints[j] = ints[j + 1];
            //            ints[j + 1] = temp;                    }
            //    }
            //}
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region Array類來實現排序 Sort 從小到大
            //int[] ints = {321,123,389,3,245,431,31, };
            //排序
            //Array.Sort(ints);
            //反轉(不排序) 最後一位輸出第一位
            //Array.Reverse(ints);
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region 合併陣列 多個集合進行合併
            //int[] inti = { 1,2,3,4,5,6};
            //int[] intj = { 7,8,9,10,11,12,13};
            //int[] intz = new int[inti.Length+intj.Length];
            //for (int i = 0; i < intz.Length; i++)
            //{
            //    if (i<inti.Length)
            //    {
            //        //intz[0]=inti[0] intz[1]=inti[1] intz[2]=inti[2] intz[3]=inti[3] intz[4]=inti[4] intz[5]=inti[5]
            //        intz[i] = inti[i];
            //    }
            //    else
            //    {
            //        //intz[6]=intj[6-6] intz[7]=intj[7-6] intz[8]=intj[8-6] intz[9]=intj[9-6] intz[10]=intj[10-6] intz[11]=intj[11-6] intz[12]=intj[12-6] intz[13]=intj[13-6]
            //        intz[i] = intj[i-inti.Length];
            //    }
            //}

            //foreach (int i in intz)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();
            #endregion

            #region 拆分陣列
            //int[] intz = {1,2,3,4,5,6,7,8,9,10,11,12};
            //對等拆
            //int[] inti = new int[intz.Length / 2];
            //int[] intj = new int[intz.Length / 2];
            //int[] inti = new int[7];
            //int[] intj = new int[intz.Length - inti.Length];
            //for (int i = 0; i < intz.Length; i++)
            //{
            //    if (i<inti.Length)
            //    {
            //        inti[i] = intz[i];
            //    }
            //    else
            //    {
            //        intj[i - inti.Length] = intz[i];
            //    }       
            //}
            //對等 輸出
            //for (int i = 0; i < inti.Length; i++)
            //{
            //    Console.WriteLine(inti[i]+"........."+intj[i]);
            //}
            //不對等 輸出
            //for (int i = 0; i < inti.Length; i++)
            //{
            //    Console.WriteLine(inti[i]);
            //}

            //Console.WriteLine("intj....................");

            //for (int i = 0; i < intj.Length; i++)
            //{
            //    Console.WriteLine(intj[i]);
            //}

            //Console.ReadKey();
            #endregion










        }
    }
}