是否有一种有效且安全的方法来反转数组中的所有元素?

Pro*_*ber 0 c arrays

我需要反转大型数组,使第一个元素成为最后一个,最后一个元素成为第一个元素.

到目前为止,我通过创建此数组的副本,然后向后迭代原始数据并写入副本来完成此操作.之后,将副本写回原始版本.

通过同时访问第一个和最后一个元素,将其中一个存储在temp var中并交换值,是否可以在一个循环中安全地执行此操作?

dan*_*ana 8

可能是最有效的方法是使用一个原地算法,比如下面的一个(这相当于从维基百科的文章在这里):

for (int ix = 0; ix < len / 2; ix++) {
    int t = arr[ix];
    arr[ix] = arr[len - ix - 1];
    arr[len - ix - 1] = t;
}
Run Code Online (Sandbox Code Playgroud)