输入一个整数n和n个各不相等的非负整数,将这些整数从小到大进行排序,要求奇数在前,偶数在后。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入一个整数n(1<n<100),再输入n个非负整数。
输出格式:
对于每组测试,在一行上输出根据要求排序后的结果,数据之间留一个空格。
输入样例:
3
5 1 2 3 4 5
3 12 4 5
6 2 4 6 8 0 1
输出样例:
1 3 5 2 4
5 4 12
1 0 2 4 6 8
/*
奇数在前,偶数在后
同为奇数,前者大交换
一偶一奇,偶数直接放后面
同为偶数,前者大放后面
*/
#include <stdio.h>
void Special_sort(int arr[],int n)
{
int flag=0;
for(int i=0;i<n-1;i++)// 趟数
{
for(int j=0;j<n-1-i;j++)// 要比较的对数
{
flag=0;
if(arr[j]%2==0 && arr[j+1]%2==0 && arr[j]>arr[j+1])// 同时为偶
flag=1;
else if(arr[j]%2!=0 && arr[j+1]%2!=0 && arr[j]>arr[j+1])// 同为奇数
flag=1;
else if(arr[j]%2==0 && arr[j+1]%2!=0)// 一偶一奇
flag=1;
else
flag=0;// 一奇一偶
if(flag==1)
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
int T,n;
int arr[100];
scanf("%d",&T);
while(T--)
{
// 输入
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
//排序
Special_sort(arr,n);
// 打印
for(int j=0;j<n;j++)
{
if(j==n-1)
printf("%d\n",arr[j]);
else
printf("%d ",arr[j]);
}
}
return 0;
}