gpt4 book ai didi

c - 在没有for的情况下向左旋转C中的数组?

转载 作者:行者123 更新时间:2023-12-01 13:17:18 24 4
gpt4 key购买 nike

我正在编写代码,我需要多次向左旋转数组。问题是我使用了 for 循环。

当我需要使用带有短数组的函数时,它很快。但是一旦我使用包含 10.000 个或更多元素的数组,它就真的很长,因为 for 循环。

所以我想知道是否有另一种方法可以在 C 中旋转数组,不需要 forwhile(或任何其他循环)?

void rotate_left(int *array, int size)
{
int nb = array[0];

for (int i = 0; i < size; i++) {
array[i] = array[i + 1];
}
array[size - 1] = nb;
}

最佳答案

Is there a way to rotate an array in C without a loop?

数组存储在连续内存中,因此任何移位都意味着线性访问其元素。

至少不是一个明确的。我的意思是有 Circular Buffer ,它使用固定大小的缓冲区,但它比数组更复杂。例如,当该缓冲区变满时,您需要用新元素覆盖最旧的元素。我想你不想要那个。


I'm writing a code and I need to rotate left an array many times.

这要求使用简单的链表,而不是数组。

在列表的情况下,您只需要将开始的节点移动到列表的末尾。

如果您在 Internet 上搜索“rotate left a simple linked list”,您会发现大量示例。

关于c - 在没有for的情况下向左旋转C中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53555745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com