如何从随机索引开始迭代所有数组元素
我想知道是否可以从任何元素开始迭代所有数组元素,而无需对数组进行预排序。
为了更清楚起见,假设我有 5 个元素的数组:
0 1 2 3 4
我想读取从索引之一开始的所有元素,例如:
2 3 4 0 1
或
4 0 1 2 3
想法是保留元素以这种方式排序:
n ,n+1 ,..., end ,start, ..., n-1
一种解决方案可能是(伪代码):
int startElement;
int value;
for(startElement;startElement<array.count;startElement++){
value = array[startElement];
}
for(int n = 0; n<startElement;n++){
value = array[n];
}
但我不知道是否有一个更好的一个。有什么建议吗?
I was wondering if is it possible to iterate trough all arrays elements starting from any of its elements without pre-sorting the array.
just to be clearer suppose i have the array of 5 elements:
0 1 2 3 4
i want to read all elements starting from one of their index like:
2 3 4 0 1
or
4 0 1 2 3
the idea is to keep the element order in this way:
n ,n+1 ,..., end ,start, ..., n-1
One solution could be (pseudocode):
int startElement;
int value;
for(startElement;startElement<array.count;startElement++){
value = array[startElement];
}
for(int n = 0; n<startElement;n++){
value = array[n];
}
but I don't know if there's a better one. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 模 运算符:
Use the modulus operator:
是的,这是可能的。试试这个:
编辑:当我第一次回答这个问题时,我以为你是在问关于选择随机索引的问题。我可能误解了。我还使用模运算符来迭代数组,如第一个答案中所示,这可能是更优雅的方法。您还可以使用上面的 if 语句,因此我将在这里留下我的答案作为替代。
Yes it's possible. Try this:
EDIT: When I first answered this I thought you were asking about picking the random index. I probably misunderstood. I also use the modulus operator to iterate arrays as in the first answer, and that's probably the more elegant approach. You can also use the if statement above, so I'll leave my answer here as an alternate.