加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么这种反向数组方法不起作用?

发布时间:2020-12-15 19:29:01 所属栏目:百科 来源:网络整理
导读:我正在尝试制作一个反转数组的方法,我不知道它为什么不起作用? 当我说int [] arr = array时,我想这样做,所以它不会受到影响所以我可以使用第二个for循环的元素,它应该有元素{1,2,3,4,5,6}但是当我用的时候 for (int i=array.Length-1;iarray.Length/2;i--){
我正在尝试制作一个反转数组的方法,我不知道它为什么不起作用?

当我说int [] arr = array时,我想这样做,所以它不会受到影响所以我可以使用第二个for循环的元素,它应该有元素{1,2,3,4,5,6}但是当我用的时候

for (int i=array.Length-1;i>array.Length/2;i--)
{
    array[i] = arr[array.Length - 1 - i];
}

在这种情况下我有6个元素,从而array.Length是6和自我从array.Length-1开始它必须从最后一个元素开始,并且必须是阵列[5] = ARR [6-1-5]其中必须array [5] = arr [0]和arr [0]是1,但我认为它是6,为什么?

这是完整的代码:

// ReverseArray method
static int [] ReverseArray(int [] array)
{
    int[] arr = array;
    for (int i=0; i<array.Length/2;i++)
    {
        array[i] = array[array.Length-1  - i];
    }
    for (int i=array.Length-1;i>array.Length/2;i--)
    {
        array[i] = arr[array.Length - 1 - i];
    }
    return array;
}

// Method for displaying elements of Array
static void DisplayArray(int [] array)
{
    int i;
    Console.Write("{");
    for (i = 0; i < array.Length-1; i++)
    {
        Console.Write(array[i] + ",");
    }
    Console.WriteLine(array[i] + "}");
}

static void Main(string[] args)
{
    int[] array = { 1,6};
    ReverseArray(array);
    DisplayArray(array);
    Console.ReadKey();
}

解决方法

你的反转方法是无效的:而不是在索引i和array.Length-1-i上交换元素,你的代码将数组的尾部复制到初始部分,有效地将数组“折叠”到自身上.

你需要删除第二个循环,并用swap替换赋值:make一个临时变量,store array [i],copy array [array.Length-1 – i],然后在它的位置写临时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读