Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在阵列之间切换元素_Algorithm - Fatal编程技术网

Algorithm 在阵列之间切换元素

Algorithm 在阵列之间切换元素,algorithm,Algorithm,我有一个n个元素的数组,我想写一个函数在数组之间切换元素,如下所示: 1233--->3112--->2331--->1233 我想不出一个简单的算法来做到这一点。请帮忙。这不是家庭作业。使用队列而不是列表。为每个步骤将已退出队列的项目排队 另一种选择是使用循环缓冲区。只要让数组保持原样,并有一个指向第一个元素的指针,就可以在每一步上移动指针。分两个阶段读取阵列。1.从指针到末端。2.从开始到指针 第三种选择是逐个交换元素 int tmp = arr[0]; for(int i = 0; i &

我有一个n个元素的数组,我想写一个函数在数组之间切换元素,如下所示:

1233--->3112--->2331--->1233


我想不出一个简单的算法来做到这一点。请帮忙。这不是家庭作业。

使用队列而不是列表。为每个步骤将已退出队列的项目排队

另一种选择是使用循环缓冲区。只要让数组保持原样,并有一个指向第一个元素的指针,就可以在每一步上移动指针。分两个阶段读取阵列。1.从指针到末端。2.从开始到指针

第三种选择是逐个交换元素

int tmp = arr[0];
for(int i = 0; i < arr.Length - 1; i++)
{
    arr[i] = arr[i+1];
}
arr[arr.Length - 1] = tmp;
inttmp=arr[0];
对于(int i=0;i
您只想旋转阵列吗

  // Rotate left
  int temp = a[0];
  for (int i = 0; i < a.Length-1; ++i)
    a[i] = a[i+1];
  a[a.Length-1] = temp;

  // Rotate right
  int temp = a[a.Length-1];
  for (int i = a.Length-1; i > 0; --i)
    a[i] = a[i-1];
  a[0] = temp;
//向左旋转
int temp=a[0];
对于(int i=0;i0;--i)
a[i]=a[i-1];
a[0]=温度;

如果只是旋转阵列-为什么?只需提供一个接口来访问能够处理模块化索引的阵列。i、 e.可以从该数组中的任何位置开始,并在必要时返回到零。为什么要进行向下投票?这是一个完全合理的问题,尽管有点简单。想要在适当的位置旋转一个数组是有充分理由的。我想你这里有一个bug。如果数组长度为2,则可以看到它。在这种情况下,将永远不会执行循环中的代码,并且您的数组将在
arr[0]
arr[1]
中具有相同的值。您的循环控制应该是
i
i