一个 整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入一行,包含整数个数n, n个整数值,彼此以一个空格分开。
按照要求排序后输出一行,包含排序后的n 个整数。
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,x,i,j,k;
int a[n],b[n];
cin >>n;
for(i=0;i<n;i++){
cin>>x;
if(x%2!=0)
for(j=0;j<n;j++)
a[j]=x;
else for(k=0;k<n;k++)
b[k]=x;
}
sort(a,a+j);
sort(b,b+k);
for(i=j-1;i>=0;i--){
cout<<a[j]<<" ";
}
for(i=0;i<k;i++)
cout<<b[k]<<" ";
return 0;
}
用一个数组也可以的:
#include <iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b){
int x = a % 2;
int y = b % 2;
if(x == y)
if(x == 0)
return a < b;
else
return a > b;
else
return x > y;
}
int main()
{
int n, i;
cin >> n;
int a[n];
for(i = 0; i < n; i++)
cin >> a[i];
sort(a, a+n, cmp);
for(i = 0; i < n; i++)
cout << a[i] << " ";
}
#include <iostream>
#include<algorithm>
using namespace std;
bool cmp1(int a, int b){
return a > b;
}
bool cmp2(int a, int b){
return a < b;
}
int main()
{
int n,x,i,j,k;
int a[n], b[n];//a是奇数组,b是偶数组
j = 0;
k = 0;
cin >> n;
for(i = 0; i < n; i++){
cin >> x;
if(x % 2 != 0)
a[j++] = x;
else
b[k++] = x;
}
sort(a, a+j, cmp1);
sort(b, b+k, cmp2);
for(i = 0; i< j; i++)
cout<<a[i]<<" ";
for(i = 0; i < k; i++)
cout<<b[i]<<" ";
return 0;
}