多维数组中元素的反转顺序

时间:2011-02-12 18:57:51

标签: c# arrays

我有一个按顺序排列的数组1,2,3,4,5我需要反转它,所以它将是5,4,3,2,1。 以下伪代码怎么样?这里不是一个更容易的方式 编辑:我很抱歉我认为是多维数组

    someclass [,] temporaryArray=new someclass [ArrayLenght,ArrayLenght];


   //for each dimension then
    for(int I=0;I<ArrayLenghtOfDimension;I++)
    {
      temporaryArray[ArrayLenghtOfDimension-I]=Array[I];

    }

    Array=temporaryArray;

5 个答案:

答案 0 :(得分:4)

数组基类有一个内置

的Reverse()扩展方法
int[] originalArray = new int[] { 1, 2, 3, 4, 5 };
int[] reversedArray = originalArray.Reverse().ToArray();

请注意,Reverse方法返回IEnumerable,因此您需要在结果上调用ToArray()。

如果你需要迭代数组中的元素,那么你只需要

foreach (int element in originalArray.Reverse())
                Console.WriteLine(element);

糟糕 - 反向是IEnumerable,而不是数组,所以你可以将它用于任何集合。

IEnumerable<int> IEnumerableInt = new List<int>() { 1, 2, 3 };
int[] reversedArray2 = IEnumerableInt.Reverse().ToArray();

答案 1 :(得分:2)

是的.net中存在快速解决方案

int[] values = new int[] { 1, 2, 3, 4, 5 };

Array.Reverse(values);

您的阵列已颠倒过来。所以你可以迭代它

foreach (int i in values)
{
    Response.Write(i.ToString());
}

以上代码将显示 的 54321

它也适用于string [],char []或其他类型的数组

答案 2 :(得分:2)

事件尽管Array类定义了Reverse个方法:

Array.Reverse(originalArray); // original array is now reversed

如果你需要做的就是向后迭代它,请执行以下操作:

for(int I= ArrayLength - 1; I >= 0; I--)
{

}

这样可以避免为反转阵列重新分配内存。

答案 3 :(得分:1)

Array.Reverse是执行此操作的最佳方式。你关心元素的顺序吗?如果是这样,那么您可以执行以下操作。

 int[] originalArray = new int[] { 10, 2, 13, 4, 5 };
 int[] descOrderedArray = originalArray.OrderByDescending(i => i).ToArray();
 int[] ascOrderedArray =   originalArray.OrderBy(i => i).ToArray();

答案 4 :(得分:1)

对于多维数组,这是一个相同的想法

int[][] multiDimArray = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
int[][] reversedMultiArray = multiDimArray.Reverse().ToArray();

生成一个包含两个数组的数组:{4,5,6},{1,2,3}