交叉排序

    xiaoxiao2024-11-28  3

    题目描述

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

    输入

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

    输出

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

    示例输入

    6 1 2 3 4 5 6

    示例输出

    1 6 3 4 5 2

    提示

    #include <stdio.h> #include <stdlib.h>

    int main() {     int n,a[150],b[150],c[150],i,j,t;     scanf("%d",&n);     for(i=1;i<=n;i++)         scanf("%d",&c[i]);     int k=0,w=0;     for(i=1;i<=n;i++)     {         if(i%2==0)         {            a[k++]=c[i];         }         else         {            b[w++]=c[i];         }

        }     for(i=0;i<=w-2;i++)     {         for(j=i+1;j<=w-1;j++)         {             if(b[i]>b[j])             {                t=b[i];                b[i]=b[j];                b[j]=t;             }         }     }     for(i=0;i<=k-2;i++)     {         for(j=i+1;j<=k-1;j++)         {             if(a[i]<a[j])             {                t=a[i];                a[i]=a[j];                a[j]=t;             }         }     }     for(i=0;i<=k-1||i<=w-1;i++)     {         printf("%d %d ",b[i],a[i]);     }     return 0; }

     

    转载请注明原文地址: https://ju.6miu.com/read-1294051.html
    最新回复(0)