当前位置: 首页 > 知识库问答 >
问题:

数组行中数字的移动

谭桐
2023-03-14
void addCoordinateRowFront(CoordinateRow rowOfCoordinates) {

        for(int j = rowOfCoordinates.numberOfElements; j > 0; j--) {

            for(int i = numberOfElements; i > 0; i--) {

                newCoordinateArray[i] = newCoordinateArray[i-1];

            }
            newCoordinateArray[0] = rowOfCoordinates.newCoordinateArray[j-1];

            numberOfElements++;
        }

    }

}

但我还是不太明白发生了什么。

例如,如果我有一行[1,2,3,4,5],如果我把这些数字加到行的前面或后面,结果是什么?

共有1个答案

费和惬
2023-03-14

newcoordinatearray[i]=newcoordinatearray[i-1];基本上是将元素移到后面,即位于索引2的元素将从索引1获得值,然后索引1将从索引0获得值。最后,索引0将获得新值。

内环

这意味着,如果[1,2,3,4,5]正确,则内部循环将把[1,1,2,3,4]转换为[1,1,2,3,4]

    null
    null

如何换挡到位

如果希望在不创建数组副本的情况下移位数组中的元素,即原地移位,可以执行以下操作:

 //replace 1st element
 int replacedIndex = dir;
 int replacedValue = array[replacedIndex];
 array[replacedIndex] = array[0];
     
 //replace all other elements
 for( int i = 1; i < array.length; i++) {
     replacedIndex = (replacedIndex + dir) % array.length;           
     int temp = array[replacedIndex];
     array[replacedIndex] = replacedValue;
     replacedValue = temp;
 }

这意味着以下几点:

    null

模运算符还可以用于允许更大的移动,这基本上是回到范围内,即将4元素数组移动13与移动1(13%4=1)相同。

可以通过增加长度将移位带入正范围来支持负移位,即给定一个5元素数组,移位-1(向左1)与移位4(向右4)相同。

所以你可以在一开始就这样做:

//copy the initial parameter to keep the original value
int dir = direction;

//shift direction into a positive range
while( dir < 0) {
  dir += array.length;
}

//bring any out-of-range direction back into range
dir %= array.length;
 类似资料:
  • 我有两个8位数的十六进制字符串。我需要对这两个十六进制字符串应用和操作,然后应用右移位到7位,并得到十进制值。我尝试将十六进制字符串转换为长度为4的字节数组(8*2=32位=4字节),并按相同的顺序对各个字节执行&操作,将结果保存到另一个长度为4的byre数组中。如何对这个字节数组进行位移位? 以及data1Bytes和data2Bytes之间的操作,该操作给出输出:bytearray1[0,0,

  • 问题内容: 这是这里提出的问题的扩展(在下面引用) 我有一个矩阵(准确地说是2d numpy ndarray): 我想根据另一个数组中的滚动值独立滚动A的每一行: 也就是说,我要这样做: 有办法有效地做到这一点吗?也许使用花哨的索引技巧? 可接受的解决方案是: 我基本上想做同样的事情,除了当索引被滚动“粘贴”到行的末尾时,我希望用NaN填充行的另一侧,而不是将值移到“前”定期排成一行。 也许以某种

  • 我在Jolt转换中有一个JSON对象数组的数组,但我需要将对象向上移动到顶层数组。我尝试添加另一个Shift,但这只是将对象移到相同的位置,或者将两个子对象的值放入一个值数组中。

  • 我创建了一个函数来删除数组中的一个特定元素,但正在努力解决的问题是,当我们从s.next()中获得要删除的元素的值时,它不是删除,而是当我们已经为它初始化了一个值时,它是删除

  • 我有以下模式- [名称:StringType,Grades:ArrayType(StructType(StructField(subject_grades),ArrayType(StructType(StructField(subject,StringType,false)),StructField(grade,LongType,false) 我想在数组中的subject字段上,该数组位于grad

  • 我正在使用Processing通过串行端口向Arduino卡发送字节数组。我遇到了一个奇怪的问题,Arduino似乎无法“同步”读取数组——字节元素似乎已转移到Arduino代码。 例如,从处理I发送阵列: Arduino可以将其解读为: 这个问题是随机出现的——我尝试了大约1/3次,并且移位总是随机的。当它工作时,它会在会话期间继续工作,直到我重新启动连接。 还有其他人遇到过类似的问题吗?关于如