如何将特定索引移到后面并将其他索引向前移动而不转换为列表?
例如,如果你有阵列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;
}
}
答案 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;
}