编写一个程序实现:对一个给定数组(该数组中有5个奇数和5个偶数)进行重新排序,把奇数按照从小到大的方式排序放在数组的前半部分,把偶数按照从大到小的方式放在数组的后半部分。如给定数组为:a[10]={1,8,7,6,2,3,5,4,9,10};经过排序后的数组为: a[10]={1,3,5,7,9,10,8,6,4,2};
把5个奇数和5个偶数分成两个数组分别排序,之后再合并即可
你题目的解答代码如下:
#include<stdio.h>
void sort(int a[],int n,int f)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(f==0 && a[j] > a[j+1] || f==1 && a[j] < a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
void main()
{
int a[10]={1,8,7,6,2,3,5,4,9,10};
int i,b[5],c[5],bl=0,cl=0;
for( i=0; i<10; i++ )
if (a[i]%2==1)
b[bl++] = a[i];
else
c[cl++] = a[i];
sort(b,bl,0);
sort(c,cl,1);
for( i=0; i<bl; i++ )
a[i] = b[i];
for( i=0; i<cl; i++ )
a[bl+i] = c[i];
for( i=0; i<10; i++ )
printf("%d ", a[i]);
}
如有帮助,望采纳!谢谢!