【问题标题】:In C#, Procedure that modifies incoming array by reversing it?在 C# 中,通过反转来修改传入数组的过程?
【发布时间】:2016-06-09 04:23:30
【问题描述】:

我一直在努力寻找解决这个问题的方法。

编写一个过程,通过反转来修改传入的整数数组。因为这是一个过程,所以它不会返回任何东西。相反,我将不得不直接修改数组,并且因为数组是引用类型变量,所以即使在此过程之后,数组也会永久更改。要反转数组,请想象数组中间有一条假想线,然后将左边的数字与右边的数字交换。

目前,这是我为该问题编写的唯一代码。根据我到目前为止编写的代码,我认为我没有找到正确的解决方案。

public void Test10(int[] numbers)
        {
            for (int i = 0; i < numbers.Length; i++)
            {

            }

【问题讨论】:

  • 考虑如果给定列表[1,2,3,4],你交换两个远端,得到[4,2,3,1],然后交换两个内部项目,得到[4,3,2,1],会发生什么。编写代码来做到这一点。
  • 你可以使用linq来排序,更好的学习linq,以后会非常好用
  • @SamiKuhmonen 我很想看到你的消息来源......
  • @SamiKuhmonen 不,这叫做不使用您面前已有的工具。如果 Linq 已经可用于该项目(而且我想不出我多年来接触过的项目),如果 Lilnq 没有对性能造成影响(许多人已经证明它不是),如果 Linq为将在下游支持您的代码的其他开发人员提供一致、可维护、可读的体验,那么除了我可以称之为纯粹务实的论点之外,没有任何理由避免它。

标签: c#


【解决方案1】:

您可以使用内置的Array.Reverse 方法,该方法反转整个一维数组中元素的顺序。

 Array.Reverse(array); // reverse supplied array

请注意,System.Array.Reverse() 会进行就地转换。

【讨论】:

  • 这个不错!!也因为这可能不足以完成明显的家庭作业......
  • 那么 Array.Reverse() 会在 for 循环之间进行吗?
  • 你不需要任何循环,只需传递一个输入数组,你的数组就会被排序。
【解决方案2】:

根据您的喜好和需要有 2 个选项

int[] array = {1,3};
Array.Reverse(array);

这将反转原始数组

 int[] array = {1,3};
 var reversedArray = array.Reverse().ToArray();

这将使用 linq 并返回新的反转数组,原始数组将保持原样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多