交叉排序 sdut oj 1591

    xiaoxiao2025-02-01  3

    交叉排序

    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

    提示

     

    来源

    2011软件1-5班《程序设计基础》机试 tongjiantao

    示例程序

    #include <bits/stdc++.h> using namespace std; int main() { int n; int a[110]; scanf("%d", &n); for(int i =0; i < n; i++) scanf("%d", &a[i]); for(int i = 0; i < n-1; i+=2) { for(int j = 0; j < n-i-2; j+=2) { if(a[j] > a[j+2]) { int t = a[j]; a[j] = a[j+2]; a[j+2] = t; } } } for(int i = 1; i < n-1; i+=2) { for(int j = 1; j < n-i-1; j+=2) { if(a[j] < a[j+2]) { int t = a[j]; a[j] = a[j+2]; a[j+2] = t; } } } for(int i = 0; i < n; i++) if(i != n-1) printf("%d ", a[i]); else printf("%d\n", a[i]); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1295990.html
    最新回复(0)