如何将数组中的项目向后发送,并将其他项目向前移动?C#
如何在不转换为列表的情况下,将特定索引移到后面,将其他索引移到前面 例如,如果您有数组xs:20、30、40、50、60。 您希望xs更改为:20、40、50、60、30 有什么想法吗 我使用的代码不起作用:如何将数组中的项目向后发送,并将其他项目向前移动?C#,c#,arrays,int,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];
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;
}
}
if(indx>=0&&indx
交换时,需要使用正确的位置:
for (int i = indx; i < xs.Length-1; i++)
{
int tmp = xs[i];
xs[i] = xs[i+1];
xs[i+1] = tmp;
}
for(int i=indx;i
我想这就是你要问的。创建此方法:
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 }
您可以向我们展示一些您尝试过的代码吗?这是一个带有数组约束的家庭作业,还是我们可以提出合理的建议?您可以简单地使用
RemoveAt
和Insert
方法。这不是家庭作业,所以请注释掉。不需要对每个数组元素进行交换。在循环之前保存xs[indx]
值就足够了,在循环中向下洗牌所有后续值,然后将保存的值存储在数组的末尾。@HABO-是的,有一点改进。这篇文章最初把这两个版本混在一起了。这是一个简单的版本,不是最快的。不过速度足够快。