如何将数组中的项目发送到后面并将其他项目向前移动? C#

时间:2014-08-10 15:33:41

标签: c# arrays int

如何将特定索引移到后面并将其他索引向前移动而不转换为列表?

例如,如果你有阵列xs:20,30,40,50,60。 并且您希望xs更改为:20,40,50,60,30

有什么想法吗?

我用过的代码不起作用:

 if (indx >= 0 && indx < xs.Length)
 {
    for (int i = indx; i < xs.Length-1; i++)
    {
        int bb = xs[indx];                    
        xs[i +1] = xs[i];
        xs[xs.Length - 1] = bb;
    }     
 }

2 个答案:

答案 0 :(得分:1)

我认为这就是你要问的。创建这个方法:

private static int[] SwapItem(int[] arr, int index)
{
    return arr.Where(i => i != arr[index]).Concat(new[] { arr[index] }).ToArray();
}

然后在你的代码中使用它:

int[] original = { 1, 2, 3, 4, 5, 6 };
var newArray = SwapItem(original, 1);

此示例中使用索引1的输出将为:

{ 1, 3, 4, 5, 6, 2 }

答案 1 :(得分:0)

当你交换时,你需要使用正确的位置:

for (int i = indx; i < xs.Length-1; i++)
{
    int tmp = xs[i];                    
    xs[i]   = xs[i+1];
    xs[i+1] = tmp;
}