交叉排序

来源:互联网 发布:sqlserver 在线格式化 编辑:程序博客网 时间:2024/05/15 07:19

题目描述

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

输入

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

输出

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

示例输入

61 2 3 4 5 6

示例输出

1 6 3 4 5 2

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;bool cmp(int x, int y){return (x>y)?1:0;}int main(){    int a[10000], b[10000];    int n, i, j, k, t;    while(~scanf("%d", &n)){k = j = 0;for(i=0; i<n; i++){scanf("%d", &t);if(i%2==0)a[j++] = t;elseb[k++] = t;}sort(a, a+j);sort(b, b+k, cmp);       if(n%2==0)        for(i=0; i<n/2; i++)        {        printf("%d ", a[i]);if(i!=(n/2)-1)printf("%d ", b[i]);else printf("%d\n", b[i]);   }   else{    for(i=0; i<(n+1)/2; i++)        {        if(i!=n/2)            printf("%d ", a[i]);                else printf("%d\n", a[i]);            if(b[i]!='\0')printf("%d ", b[i]);        }}}return 0;}


0 0
原创粉丝点击