题解 | #整数奇偶排序#

整数奇偶排序

https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163

注意 sort函数中排序的上下限范围

  1. 将十个数分为前一半为奇数,后一半为偶数的形式
  2. 对奇数部分进行从大到小排序,对偶数部分进行从小到大排序
  3. 输出数组即可
#include <algorithm>
#include <iostream>
using namespace std;

bool cmp(int x, int y){
    return x>y;
}
int main() {
    int num[10];
    int *p = num, *q = &num[9],temp;//p指向奇数,q指向偶数
    //输入
    for (int i = 0; i < 10; i++)
        cin >> num[i];

    //将数组分为前一半为奇数,后一半为偶数的形式
    while(p < q){
        while (*p %2 != 0 && p < q) p++;
        while (*q %2 == 0 && p < q) q--;
        if(p < q){
            temp = *p;
            *p = *q;
            *q = temp;
            p++;
            q--;
        }    
    }

//排序
    if (*p %2 == 0){
        sort(num,p,cmp);
    }
    else sort(num,p+1,cmp);
    if (*q %2 == 0)   
        sort(q,num+10);
    else sort(q+1,num+10);

    //输出
    for (int i = 0; i < 10; i++)
        cout << num[i]<<" ";    
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务