1. 程式人生 > >C#基礎——陣列

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];
                }
            }