给定一个整数数组,对该数组进行排序,使数组的第一部分按升序排列奇数,数组的第二部分按偶数顺序排列。 例如, 输入:5,3,6,8,1,7,2 输出:1,3,5,7,8,6,2
提前致谢!(JAVA)
答案 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];
}