交叉排序【冒泡排序】

    xiaoxiao2026-06-19  12

    交叉排序

    Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^

    题目描述

    输入N个数,把所有奇数位置上的数从小到大排序,把偶数位置上的数从大到小排序。

    输入

    输入的第一行是一个正整数 N(2<=N<=100)。 第二行是 N个用空格隔开的整数。

    输出

    输出只有一行 N个数,是按要求排序后的序列,用空格隔开。

    示例输入

    6 1 2 3 4 5 6

    示例输出

    1 6 3 4 5 2

    提示

      #include<bits/stdc++.h> using namespace std; int main() { int a[110]; int n,t; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n-1;i++) //对奇数位置上的数进行从小到大排序 { for(int j=1;j<=n-i-1;j=j+2) { if(a[j]>a[j+2]) { t=a[j]; a[j]=a[j+2]; a[j+2]=t; } } } for(int i=2;i<=n-1;i++) //将偶数位置的数从大到小排序 { for(int j=2;j<=n-i;j=j+2) { if(a[j]<a[j+2]) { t=a[j]; a[j]=a[j+2]; a[j+2]=t; } } } for(int k=1;k<=n;k++) { if(k!=n) cout<<a[k]<<" "; else cout<<a[k]<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1310685.html
    最新回复(0)