整数奇偶排序
刷题记录16
题目描述
给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
代码:
#include<bits/stdc++.h>
using namespace std;
int a[10];
int b[10],c[10];
int main()
{
for(int i=0;i<10;i++) //输入几个数
{
cin>>a[i];
}
int m=0,n=0;
for(int i=0;i<10;i++) //判断a[i]是奇数还是偶数
{
if(a[i]%2!=0)
{
b[m++]=a[i];//奇数则划入b数组
}
else
{
c[n++]=a[i];//偶数则划入C数组
}
}
sort(b,b+m,greater<int>());//利用了库函数sort进行排序,greater<int>是从大到小排序
sort(c,c+n);
for (int i=0;i<m;i++) //输出奇数
{
cout<<b[i]<< " ";
}
for (int i=0;i<n;i++) //再输出偶数
{
if (i<n-1) //判断是否是最后一个。
{
cout<<c[i]<< " ";
}
else
{
cout<<c[i] ;
}
}
return 0 ;
}
解题思路:先排序后求和,sort函数的功能是对给定区间所有元素进行排序。sort函数右三个参数:(1)第一个是排序数组的起始地址(2)第二个是结束地址(3)最后一个是参数的排序方法。假如sort里没有第三个参数,则默认从小到大。如果要实现从大到小
则用greater()。