【发布时间】:2020-03-03 19:47:06
【问题描述】:
我想通过仅更改索引将一个数组中的元素向右移动。另外我不想使用内置函数
例如,如果我们有
8,6,5,3,9
然后我们会有
9,8,6,5,3
如果数组没有足够的长度。其余元素移位将从数组的第一个索引开始。
int index = 0, temp = 0;
int[] myarray = new int[int.Parse(Console.ReadLine())];
for (int i = 0; i < myarray.Length; i++)
{
myarray[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < myarray.Length; i++)
{
if (myarray.Length <= i + 5)
{
index = ((i + 5) % 5);
temp = myarray[index];
myarray[index] = myarray[i];
myarray[i] = temp;
}
else
{
temp = myarray[i + 5];
myarray[i + 5] = myarray[i];
myarray[i] = temp;
}
}
这是我尝试过的,但它不起作用
【问题讨论】:
-
如果您描述您的算法并详细说明“它不起作用”,那就太好了。源中的几个 cmets 可能就足够了。
-
你的例子是右移一个。
-
@Guy 如果数组没有足够的长度。其余元素的移位将从数组的第一个索引开始。例如,六个从最后一个移位 2,从第一个移位 3。
-
@Sherviniv 是的,这就是它的工作原理。但是移位 5 会使大小为 5 的数组保持不变。
-
@Sinatr 我首先填充了我的数组。然后我尝试用第二个 for 更改索引。如果下一个索引 + 5 大于数组的长度,请执行某些操作。我不知道如何实现它。