【算法】數組逆置


馬上回來問題描述: 對於一個一維數組,將其中的元素逆置輸出!

解決方法一: 前后端數據交換

object[] array = new object[] { 1,2,3,4,5,6,'x'};
            for (int i = 0; i < array.Length / 2; i++)
            {
               
                    object t = array[i];
                    array[i] = array[array.Length-1-i];
                    array[array.Length-1-i] = t;
                
            }
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write("  " + array[i]);
            }
            Console.ReadKey();

結果  ,由於將數組定義為object,所以數組的元素可以是任意類型,但這樣會有一個問題,就是數組要想比較大小的時候就麻煩了,可以考慮使用泛型來實現!

image


解決方法二:采用泛型實現

Msdn官方解釋:泛型和數組

在 C# 2.0 以及更高版本中,下限為零的一維數組自動實現 IList<T>。這使您可以創建能夠使用相同代碼循環訪問數組和其他集合類型的泛型方法。此技術主要對讀取集合中的數據很有用。IList<T> 接口不能用於在數組中添加或移除元素。如果嘗試對此上下文中的數組調用 IList<T> 方法(例如 RemoveAt),則將引發異常。

下面的代碼示例演示帶有 IList<T> 輸入參數的單個泛型方法如何同時循環訪問列表和數組,本例中為整數數組。

IList 屬性如下:

image

static void Main(string[] args)
        {
            object[] array = new object[] { 1,2,3,4,5,6,'x'};
            int[] array2 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; 
            InversionArray(array);
            InversionArray(array2);
            PrintArray(array);
            PrintArray(array2);
            Console.ReadKey();
        }

        private static void PrintArray<T>(IList<T> array)
        {
            for (int i = 0; i < array.Count; i++)  //將之前的array.Length  改為array.Count;
            {
                Console.Write("  " + array[i]);
            }
            Console.WriteLine("打印完畢");
        }

        private static void InversionArray<T>(IList<T> array)
        {
            for (int i = 0; i < array.Count/ 2; i++)
            {

                T t = array[i];
                array[i] = array[array.Count - 1 - i];
                array[array.Count - 1 - i] = t;

            }
        }

結果:

image


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM