【问题标题】:Right shift elements in an array by 5将数组中的元素右移 5
【发布时间】: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 大于数组的长度,请执行某些操作。我不知道如何实现它。

标签: c# arrays algorithm


【解决方案1】:

如果移位计数小于或等于数组大小,您可以使用此代码(我编辑了this link 的答案):

        using System;

        int M = 5;//shift count
        int size; //size of array
        int[] myarray = new int[int.Parse(Console.ReadLine())];
        for (int i = 0; i < myarray.Length; i++)
        {
            myarray[i] = int.Parse(Console.ReadLine());
        }

        size = myarray.Length;
        if (size >= M)
        {
            Array.Reverse(myarray, 0, size);
            Array.Reverse(myarray, 0, M);
            Array.Reverse(myarray, M, size - M);

            for (int i = 0; i < myarray.Length; i++)
            {
                Console.Write(myarray[i]+"\t");
            }

            Console.Read();
         }

【讨论】:

猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多