将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
void sort_arr(int arr1[],int len1,int arr2[])
{
int temp1[256]={0};
int temp2[256]={0};
int p=0,q=0;
for(int i=0;i<len1;i++)
{
if(arr1[i]%2==1)
temp1[p++]=arr1[i];
else
temp2[q++]=arr1[i];
}
sort(temp1,temp1+p);
sort(temp2,temp2+q,cmp);
int k=(p<q)?p:q;
int j=0;
int i;
for(i=0;i<k;i++)
{
arr2[j++]=temp1[i];
arr2[j++]=temp2[i];
}
if(i==p)
{
while(i<q)
{
arr2[j++]=temp2[i];
i++;
}
}
else
{
while(i<p)
{
arr2[j++]=temp2[i];
i++;
}
}
}
int main()
{
int input[256]={0};
int output[256]={0};
int a,k=0,b,l=0;
cin>>a;
while(getchar()!='\n')
{
input[k++]=a;
cin>>a;
}
input[k++]=a;
sort_arr(input,k,output);
for(int i=0;i<k;i++)
cout<<output[i]<<' ';
cout<<endl;
return 0;
}