给定一个整数数组,对该数组进行排序,使数组的第一部分按升序排列奇数,数组的第二部分按降序排列偶数例如,输入:5,3,6,8,1,7,2输出:1,3,5,7,8,6,2
提前致谢!(JAVA)
这可以在 O(nlogn) 中完成 . 首先使用 O(nlogn) 中您喜欢的任何排序算法对整个数组进行排序 .
O(nlogn)
所以你得到 1 2 3 5 6 7 8 .
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]; }
1 回答
这可以在
O(nlogn)
中完成 . 首先使用O(nlogn)
中您喜欢的任何排序算法对整个数组进行排序 .所以你得到
1 2 3 5 6 7 8
.制作一个新阵列 . 然后从第一个元素开始一个遍历数组 . 如果它是奇数将它放在数组的开头,如果它是偶数然后将它放在最后: