m0_65894183 2022-03-09 19:20 采纳率: 66.7%
浏览 37
已结题

各位帮我解决一下这个

给定n个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。

输入说明
第一行输入一个整数n, 第二行包含n个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出说明
按照要求排序后输出一行,包含排序后的n个整数,数与数之间以一个空格分开。

  • 写回答

2条回答 默认 最新

  • 浪客 2022-03-09 20:56
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void sort(int *a, int len)
    {
        for(int i = 0; i < len - 1; i++)
            for(int j = i + 1; j < len; j++)
                if(a[i] < a[j])
                {
                    a[i] += a[j];
                    a[j] = a[i] - a[j];
                    a[i] = a[i] - a[j];
                }
    }
    
    int main()
    {
        int n;
        scanf("%d", &n);
    
        int *lista = (int *)calloc(n, sizeof(int));
        int *listb = (int *)calloc(n, sizeof(int));
    
        int i = 0, ji = 0, ou = 0, t;
    
        while(i < n)
        {
            scanf("%d", &t);
    
            if(t % 2 == 0)
                listb[ou++] = t;
            else
                lista[ji++] = t;
    
            i++;
        }
    
        sort(lista, ji);
        sort(listb, ou);
    
        for(i = 0; i < ou; i++)
            lista[ji + i] = listb[ou - i - 1];
    
        for(i = 0; i < n; i++)
            printf("%d ", lista[i]);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月22日
  • 已采纳回答 5月22日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。