交叉排序

    xiaoxiao2024-12-27  16

    交叉排序

    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 <stdio.h> int main() { int n, i, j, a[110], t; scanf("%d", &n); for(i=1; i<=n; i++) scanf("%d", &a[i]); 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=2; i<=n; i+=2) for(j=2; j<=n-i; 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; i++) printf("%d ", a[i]); printf("%d", a[n]); }

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