您的位置:首页 > 其它

华为机试:元素按奇偶排序

2014-09-18 20:44 169 查看
将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 
若奇数和偶数不等长,则把剩下的直接放到数组中。

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: