C# 在c语言中,如何将数组的所有元素从左侧移到右侧#
我试图将数组的元素从最左边一直交换到最右边 所以数组看起来像这样:1234567 我希望输出是这样的:7654321 我已经试过了,但它所做的只是将左侧的最后一个数字移动到右侧,而没有其他数字C# 在c语言中,如何将数组的所有元素从左侧移到右侧#,c#,arrays,sorting,C#,Arrays,Sorting,我试图将数组的元素从最左边一直交换到最右边 所以数组看起来像这样:1234567 我希望输出是这样的:7654321 我已经试过了,但它所做的只是将左侧的最后一个数字移动到右侧,而没有其他数字 static int[] ShiftArray(int[] array) { int[] temp = new int[array.Length]; for (int index = 0; index < array.Length; index++)
static int[] ShiftArray(int[] array)
{
int[] temp = new int[array.Length];
for (int index = 0; index < array.Length; index++)
{
temp[(index + 1) % temp.Length] = array[index];
}
return temp;
}
静态int[]移位数组(int[]数组)
{
int[]temp=newint[array.Length];
for(int index=0;index
谢谢你的建议 您可以使用
System.Linq
中的反向方法
return array.ToList().Reverse().ToArray();
为什么不按降序遍历数组呢
for(int i = array.length - 1; i >= 0; i--)
{
// do something
}
如果要更改数组本身的顺序(而不创建新数组),可以使用以下命令:
Array.Reverse(array);
using System;
public class Program
{
public static void Main()
{
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7};
int start = 0;
int end = array.Length - 1;
while (start < end)
{
int temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
Console.WriteLine("Result: {0}", String.Join("", array));
}
}
如果不想使用任何预构建的.NET函数,可以尝试以下操作:
Array.Reverse(array);
using System;
public class Program
{
public static void Main()
{
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7};
int start = 0;
int end = array.Length - 1;
while (start < end)
{
int temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
Console.WriteLine("Result: {0}", String.Join("", array));
}
}
演示
我将其描述为反转数组,而不是移动数组(移动是一种完全不同的操作)。提示:如果要反转方向,则意味着必须从左读取,然后向右写入,或者从右读取表单,然后向左写入。所以你需要从右向左移动一个指针,也就是说,每一步减去一。temp.Length-1-index…不需要调用ToList()
。