zoukankan      html  css  js  c++  java
  • 【算法】数组逆置

    马上回来问题描述: 对于一个一维数组,将其中的元素逆置输出!

    解决方法一: 前后端数据交换

    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


     

    我不追求自己是何等的完美,但我追求每一天的提高!
  • 相关阅读:
    共享内存基本操作
    mmap 操作
    busybox 安装问题解决
    ubuntu apt-get failed
    live555 学习资料
    循环队列实现
    socket 聊天室实现
    socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)
    socket 映射服务器程序
    vector和list插入性能对比
  • 原文地址:https://www.cnblogs.com/minesky/p/3380194.html
Copyright © 2011-2022 走看看