给定n个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。
输入说明
第一行输入一个整数n, 第二行包含n个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出说明
按照要求排序后输出一行,包含排序后的n个整数,数与数之间以一个空格分开。
给定n个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。
输入说明
第一行输入一个整数n, 第二行包含n个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出说明
按照要求排序后输出一行,包含排序后的n个整数,数与数之间以一个空格分开。
#include <stdio.h>
#include <stdlib.h>
void sort(int *a, int len)
{
for(int i = 0; i < len - 1; i++)
for(int j = i + 1; j < len; j++)
if(a[i] < a[j])
{
a[i] += a[j];
a[j] = a[i] - a[j];
a[i] = a[i] - a[j];
}
}
int main()
{
int n;
scanf("%d", &n);
int *lista = (int *)calloc(n, sizeof(int));
int *listb = (int *)calloc(n, sizeof(int));
int i = 0, ji = 0, ou = 0, t;
while(i < n)
{
scanf("%d", &t);
if(t % 2 == 0)
listb[ou++] = t;
else
lista[ji++] = t;
i++;
}
sort(lista, ji);
sort(listb, ou);
for(i = 0; i < ou; i++)
lista[ji + i] = listb[ou - i - 1];
for(i = 0; i < n; i++)
printf("%d ", lista[i]);
return 0;
}