遍历数组,把原数组拆分成2个数组,2个数组分别排序就是了
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int cut(int a[], int n,int od[],int ev[])
{
int i, j=0, t=0;
for (i = 0; i < n; i++)
{
if (a[i] % 2 == 1) //奇数
{
od[j++] = a[i];
}
else
ev[t++] = a[i];
}
return j; //返回奇数的个数
}
//f=1表示从大到小,0表示从小到大
void sort(int a[], int n,int f)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if ((f == 1 && a[j] < a[j + 1]) || (f == 0 && a[j] > a[j + 1]))
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
int main()
{
int a[100], od[100], ev[100];
int n = 0, i;
int nmbod = 0, nmbev = 0; //奇数和偶数的个数
while (scanf("%d", &a[n]) != EOF)
n++;
nmbod = cut(a, n, od, ev);
nmbev = n - nmbod;
sort(od, nmbod,1);
sort(ev, nmbev,0);
for (i = 0; i < nmbod; i++)
printf("%d ", od[i]);
printf("\n");
for (i = 0; i < nmbev; i++)
printf("%d ", ev[i]);
return 0;
}
#include <stdio.h>
int cut(int a[],int n)
{
int m=0,t;
for(int i=0;i<n;i++)
{
if(a[i]%2==1)
{
t = a[m];
a[m] = a[i];
a[i] = t;
m++;
}
}
return m;
}
void sort(int a[],int n,int s)
{
for(int i=0;i<s-1;i++)
for(int j=0;j<s-i-1;j++)
{
if(a[j] < a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] =t ;
}
}
for(int i=s;i<n-1;i++)
for(int j=s;j<n-1-i+s;j++)
{
if(a[j] > a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] =t ;
}
}
}
int main()
{
int a[6];
for(int i=0;i<6;i++)
scanf("%d",&a[i]);
int m = cut(a,6);
sort(a,6,m);
for(int i=0;i<6;i++)
printf("%d ",a[i]);
return 0;
}
cut函数把奇数排左边,偶数排右边
sort函数让低位的一半从大到小排序,高位的一半从小到大排序
这回清楚了吗