一个整数数组,数组的第一部分按升序排列奇数,第二部分按降序排列偶数

时间:2015-11-07 08:33:55

标签: arrays sorting

给定一个整数数组,对该数组进行排序,使数组的第一部分按升序排列奇数,数组的第二部分按偶数顺序排列。 例如, 输入:5,3,6,8,1,7,2 输出:1,3,5,7,8,6,2

提前致谢!(JAVA)

1 个答案:

答案 0 :(得分:1)

这可以在O(nlogn)中完成。首先使用O(nlogn)中的任何排序算法对整个数组进行排序。

所以你得到1 2 3 5 6 7 8

制作一个新阵列。然后从第一个元素开始一个遍历数组。如果它是奇数将它放在数组的开头,如果是偶数则将它放在最后:

int i = 0, j = n - 1;

for(int k = 0; k < n; k++)
{
    if(oldarray[k] % 2 == 1)
       newarray[i++] = oldarray[k];
    else
       newarray[j--] = oldarray[k];
}