题目:
将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。
#include <iostream>
#include <string>
#define len 11
using namespace std;
int cmp(const void *p,const void *q)
{
return *(int *)p-*(int *)q;
}
int cmp2(const void *p,const void *q)
{
return *(int *)q-*(int *)p;
}
int main()
{
int a[]={2,1,4,3,6,5,9,8,7,0,111};
int arryJi[len];
int arryOu[len];
int i=0,j=0,k;
for(k=0;k<len;k++)
{
if(a[k]%2==0)
arryOu[j++]=a[k];
else
arryJi[i++]=a[k];
}
qsort(arryJi,i,sizeof(int),cmp);
qsort(arryOu,j,sizeof(int),cmp2);
int result[len],flag=0;
k=0;
int ii=0,jj=0;
while(ii<i && jj<j)
{
if(!flag)
{
result[k++]=arryJi[ii++];
flag=1;
}
else
{
result[k++]=arryOu[jj++];
flag=0;
}
}
while(ii<i)
{
result[k++]=arryJi[ii++];
}
while(jj<j)
{
result[k++]=arryOu[jj++];
}
for(i=0;i<len;i++)
cout<<result[i]<<" ";
cout<<endl;
return 0;
}
原文地址:http://blog.csdn.net/wtyvhreal/article/details/45665943