c++活泼虾 2022-08-28 09:41 采纳率: 64.3%
浏览 81
已结题

1181:整数奇偶排序?

1181:整数奇偶排序
【题目描述】
给定10个整数的序列,要求对其重新排序。排序要求:

1.奇数在前,偶数在后;

2.奇数按从大到小排序;

3.偶数按从小到大排序。

【输入】
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。

【输出】
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。

【输入样例】
4 7 3 13 11 12 0 47 34 98
【输出样例】
47 13 11 7 3 0 4 12 34 98


#include<bits/stdc++.h>
using namespace std;
int a[15],i,j,n=10,ma;
int main()
{
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<n;i++)
    {
        ma=0;
        for(int j=1;j<n-i;j++)
        {
            if(a[j]>a[ma])
            {
                ma=j;
            }
        }
        swap(a[ma],a[n-i]);
    }
    for(i=n-1;i>=0;i--)
    {
        if(a[i]%2==1)
        {
            cout<<a[i]<<' ';
        }
    }
    for(i=0;i<n;i++)
    {
        if(a[i]%2==0)
        {
            cout<<a[i]<<" ";
        }
    }
    return 0;
}

选择排序,样例多出一个0,少一个98

  • 写回答

5条回答 默认 最新

  • Minecraft__Him 2022-08-28 12:29
    关注

    冒泡:

    #include<bits/stdc++.h>
    using namespace std;
    int d,a[20],b[20],m=0,n=0,i,j;
    int main() {
        for(i=0; i<10; i++) {
            cin>>d;
            if(d%2==1) {
                a[m++]=d;
            } else {
                b[n++]=d;
            }
        }
        for(i=0; i<m; i++)
            for(j=i+1; j<m; j++)
                if(a[i]<a[j]) {
                    swap(a[i],a[j]);
                }
        for(i=0; i<n; i++)
            for(j=i+1; j<n; j++)
                if(b[i]>b[j]) {
                    swap(b[i],b[j]);
                }
        for(i=0; i<m; i++)
            cout<<a[i]<<" ";
        for(i=0; i<n; i++)
            cout<<b[i]<<" ";
        cout<<endl;
        return 0;
    }
    
    

    选择:

    #include<bits/stdc++.h>
    using namespace std;
    int c,a[100],b[100],s=0,k=0,i,j,ma,mi;
    int main() {
        for(i=0; i<10; i++) {
            cin>>c;
            if(c%2==1) a[s++]=c;
            else b[k++]=c;
        }
        for(i=1; i<s; i++) {
            ma=0;
            for(j=1; j<=s-i; j++) {
                if(a[j]<a[ma]) {
                    ma=j;
                }
            }
            if(ma!=s-i) {
                swap(a[s-i],a[ma]);
            }
        }
        for(i=1; i<k; i++) {
            mi=0;
            for(j=1; j<=k-i; j++) {
                if(b[j]>b[mi]) {
                    mi=j;
                }
            }
            if(mi!=k-i) {
                swap(b[k-i],b[mi]);
            }
        }
        for(i=0; i<s; i++)
            cout<<a[i]<<" ";
        for(i=0; i<k; i++)
            cout<<b[i]<<" ";
        return 0;
    }
    
    
    
    插入:
    
    ```c++
    #include<bits/stdc++.h>
    using namespace std;
    int c,a[100],b[100],s=0,k=0,i,j,t,r,y;
    int main() {
        for(i=0; i<10; i++) {
            cin>>c;
            if(c%2==1) a[s++]=c;
            else b[k++]=c;
        }
        for(i=1; i<s; i++) {
            for(j=0; j<i; j++)
                if(a[j]<=a[i]) break;
            if(j!=i) {
                t=a[i];
                for(r=i-1; r>=j; r--) {
                    a[r+1]=a[r];
                }
                a[j]=t;
            }
        }
        for(i=1; i<k; i++) {
            for(j=0; j<i; j++)
                if(b[j]>=b[i]) break;
            if(j!=i) {
                y=b[i];
                for(r=i-1; r>=j; r--) {
                    b[r+1]=b[r];
                }
                b[j]=y;
            }
        }
        for(i=0; i<s; i++)
            cout<<a[i]<<" ";
        for(i=0; i<k; i++)
            cout<<b[i]<<" ";
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月6日
  • 已采纳回答 8月29日
  • 专家修改了标签 8月28日
  • 创建了问题 8月28日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度