总时间限制:
1000ms
内存限制:
65536kB
描述
给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
样例输入
4 7 3 13 11 12 0 47 34 98
样例输出
47 13 11 7 3 0 4 12 34 98
思想:排序我是用快速排序进行排序的,然后输入的时候是对输入的每一个数进行判断,如果是奇数放到一个数组里面,如果是偶数则放到另一个数组里面,然后调用快排进行排序,最后按照要求输出结果就可以了,下面是代码。
代码:
#include<iostream>
using namespace std;
int a[10],b[10];
void QuickSort(int a[],int left,int right)
{
if(left>=right)
return ;
int L=left,R=right;
int WJH=a[L];
while(L<R)
{
while(L<R && a[R]>=WJH) R--;
if(L<R) a[L]=a[R];
while(L<R && a[L]<=WJH) L++;
if(L<R) a[R]=a[L];
if(L>=R) a[L]=WJH;
}
QuickSort(a,left,R-1);
QuickSort(a,R+1,right);
}
int main()
{
int i,x,j=0,k=0;
for(i=0;i<10;i++)
{
cin>>x;
if(x%2!=0)
{
a[k]=x;
k++;
}
else
{
b[j]=x;
j++;
}
}
QuickSort(a,0,k-1);
QuickSort(b,0,j-1);
for(i=k-1;i>=0;i--)
cout<<a[i]<<" ";
for(i=0;i<=j-1;i++)
cout<<b[i]<<" ";
return 0;
}