我感觉是用一维数组来解决问题 但水平有限没有思路
我想定义数组然后区分数组的奇偶性,排列出来
把奇数和偶数分别放到两个数组中进行排序就好了啊
#include <stdio.h>
void sorts(int *a,int n,int order)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if((order == 1 && a[j] > a[j+1]) || order == 0 && a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10],c[10],bn=0,cn=0;
int i;
for(i=0;i<10;i++)
if(a[i]%2==0)
c[cn++] = a[i];
else
b[bn++] = a[i];
sorts(b,bn,1);
sorts(c,cn,0);
for(i=0;i<bn;i++)
a[i] = b[i];
for(i=0;i<cn;i++)
a[cn+i] = c[i];
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
把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]);
}
如有帮助,望采纳!谢谢!