交叉排序
Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^
题目描述
输入N个数,把所有奇数位置上的数从小到大排序,把偶数位置上的数从大到小排序。
输入
输入的第一行是一个正整数
N(2<=N<=100)。
第二行是 N 个用空格隔开的整数。
第二行是 N 个用空格隔开的整数。
输出
输出只有一行
N
个数,是按要求排序后的序列,用空格隔开。
示例输入
6 1 2 3 4 5 6
示例输出
1 6 3 4 5 2
提示
#include <iostream>
#include<algorithm>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
int cmp1(int x, int y)
{
return x > y;
}
int cmp2(int x, int y)
{
return x < y;
}
int main()
{
int n, a[110], b[110], s[110];
int c, c1 = 0, c2 = 0;
cin >> n;
for(int i = 1; i <= n; i++)
{
if(i % 2 == 0)
cin >> a[c1++];
else
cin >> b[c2++];
}
sort(a, a + c1, cmp1);
sort(b, b + c2, cmp2);
c = 0;
for(int i = 0; i < c2; i++)
{
s[c] = b[i];
c = c + 2;
}
c = 1;
for(int i = 0; i < c1; i++)
{
s[c] = a[i];
c = c + 2;
}
for(int i = 0; i < c - 2; i++)
cout << s[i] << " ";
cout << s[c - 2] << endl;
return 0;
}