交叉排序

来源:互联网 发布:视频打马赛克软件 编辑:程序博客网 时间:2024/05/01 23:40

题目描述

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

输入

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

输出

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

示例输入

61 2 3 4 5 6

示例输出

1 6 3 4 5 2

提示


就是两次排序呗


#include <iostream>#include <cstdio>using namespace std;int a[110];int main(){    int n,i,j,t;    scanf("%d",&n);    for(i=0;i<n;i++)    {        scanf("%d",&a[i]);    }    for(i=0;i<n-2;i+=2)    {       for(j=0;j<n-i-2;j+=2)       {           if(a[j]>a[j+2])           {               t=a[j];               a[j]=a[j+2];               a[j+2]=t;           }       }    }    for(i=1;i<n-1;i+=2)    {       for(j=1;j<n-i-1;j+=2)       {           if(a[j]<a[j+2])           {               t=a[j];               a[j]=a[j+2];               a[j+2]=t;           }       }    }    for(i=0;i<n;i++)    {        if(i==n-1)            printf("%d\n",a[i]);        else            printf("%d ",a[i]);    }    return 0;}

0 0
原创粉丝点击