思路:在第一次看到这道题的时候我第一想法是用冒泡,但好像我的水平还不允许我写出来。我又读了遍题目发现它的数据很小,我就寻思着把它分成奇偶两部分。应该怎么分呢?
当然在读入的时候把这个问题解决就最好了。正好它的数据范围又这么小,我就另开了两个数组aa,bb分别存奇数和偶数。在运用sort函数单独对两部分排序,最后输出时先奇再偶就解决了。幸好我没一次在冒泡上死磕,也不知道我是怎么想的了。。。。
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
//输入的时候区分奇偶,奇aa,偶bb
//分别sort
using namespace std;
const int N = 1010;
int a[N];
int aa[N];
int bb[N];
int n;
int t1,t2;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i] % 2 == 1) {
aa[t1] = a[i];
t1++;
}
if(a[i] % 2 == 0){
bb[t2] = a[i];
t2++;
}
}
//int len1 = strlen(aa);
//int len2 = strlen(bb);
int len1 = t1;
int len2 = t2;
sort(aa,aa+len1);
sort(bb,bb+len2);
for(int i=0;i<len1;i++){
printf("%d ",aa[i]);
}
for(int i=0;i<len2;i++){
printf("%d ",bb[i]);
}
return 0;
}