首页 文章

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

提问于
浏览
-1

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

提前致谢!(JAVA)

1 回答

  • 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];
    }
    

相关问题