排序问题题解大合集
算法1
首先,我们先输入n
个数
在此之前,我们要养成好习惯,先把a
与b
数组弄成0
之后我们输出n个x
只要x
不可以被2整除,说明这是个奇数,我们用一个计数器ans
来累加奇数的个数,顺势把x带入a[++ans]
如果不能被整除,说明这是个偶数,我们用一个计数器sum
来累加偶数的个数,顺势把x带入b[++sum]
这样下来,ans
就是奇数的总数
sum
就是偶数的总数
接着要从小到大排序,懒汉就用sort排序吧
最后我们输出它们即可
样例解说:
8//n个数
1 2 3 4 5 6 7 8
第一步
1%2!=0 奇数 ans=1
a数组:
1
第二步
2%2==0 偶数 sum=1
b数组:
2
第三步
3%2!=0 奇数 ans=2
a数组:
1 3
第四步
4%2==0 偶数 sum=3
b数组:
2 4
第五步
5%2!=0 奇数 ans=3
a数组:
1 3 5
第六步
6%2==0 偶数 sum=3
b数组:
2 4 6
第七步
7%2!=0 奇数 ans=4
a数组:
1 3 5 7
第八步
8%2==0 偶数 sum=4
b数组:
2 4 6 8
a数组
排序前
1 3 5 7
排序后
1 3 5 7
b数组
排序前
2 4 6 8
排序后
2 4 6 8
ans=4
sum=4
输出:
1 3 5 7 2 4 6 8
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int n,x,ans=0,sum=0,a[1001],b[1001];
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
if(x%2!=0)a[++ans]=x;
else b[++sum]=x;
}
sort(a+1,a+1+ans);
sort(b+1,b+1+sum);
for(int i=1;i<=ans;i++)cout<<a[i]<<' ';
for(int i=1;i<=sum;i++)cout<<b[i]<<' ';
}
%%%