问题:
有n个数,每一次可以交换两个相邻的且奇偶性不同的两个数,可以进行任意多次操作(包括0次),求最终得到的字典序最小的序列。
————————————————————————————————————
Sample input
8
1 2 5 2 5 6 3 7
Sample output
1 2 2 5 5 3 6 7
#include<stdio.h>
int j[1048579];
int main(void){
int m;
scanf("%d",&m);
int a;
int ji=0;
int oi=m-1;
// int oi=0;
for(int i=0;i<m;i++){
scanf("%d",&a);
//将奇偶数分开存储,这里将偶数从同一个数组的尾部开始存储,是为了节省空间
if(a%2==0)j[oi--]=a;
else j[ji++]=a;
}
int jii=0;
int oii=m-1;
int i=0;
while(jii<ji&&oii>=ji){
if(j[oii]<j[jii]){printf("%d ",j[oii--]);
}else printf("%d ",j[jii++]);
}
while(jii<ji){
printf("%d ",j[jii++]);
}
while(oii>=ji){
printf("%d ",j[oii--]);
}
}