gpt4 book ai didi

c++ - 重新排列已排序的数组

转载 作者:搜寻专家 更新时间:2023-10-30 23:54:58 24 4
gpt4 key购买 nike

我有一个按升序排序的数组。我必须构建一个新数组,排序数组的最后一个元素将是新数组的第一个元素,排序数组的第一个元素将是新数组的下一个元素,依此类推。例如-

//if a[] is the sorted array.
a[]={1,2,3,4,5}

//output-
//b[] is the new array.
b[]={5,1,4,2,3}

我的方法是——使用两个索引 ij

for (int i = 0, j = 0; j< count; i++, j++)
{
b[j] = a[count - (i + 1)];
b[++j] = a[i];
}

现在的问题是如何仅使用单个索引来执行此操作,即仅使用我示例中的索引 i

提前致谢!

最佳答案

for (int i = 0; i < count; ++i)
b[i] = a[i % 2 ? i / 2 : count - i / 2 - 1];

解释:i % 2 检查设置的 b 索引是否位于从 0 开始的奇数位置:如果是,它从 a[i/2],否则它从 a 的末尾返回相同的 i/2 数量,即 a[count - 1],所以 a[count - i/2 - 1]

看它运行here .

关于c++ - 重新排列已排序的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330884/

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