重新排列已排序的数组

时间:2015-12-17 09:22:58

标签: c++ arrays

我按升序排序数组。我必须以这样的方式构建一个新数组:排序数组的最后一个元素将是新数组的第一个元素,并且排序数组的第一个元素将是新数组的下一个元素,依此类推。 例如 -

//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

提前致谢!

1 个答案:

答案 0 :(得分:3)

for (int i = 0; i < count / 2; i++)
{
    b[2*i] = a[count - (i + 1)];
    b[2 * i + 1] = a[i];
}
if (count % 2)
{
    b[count - 1] = a [count / 2];
}