如果问题得到解决的话,请点下采纳
#include <stdlib.h>
#include <stdio.h>
int * order;
int * p;
int cmp(const void * a, const void * b)
{
int x = *(int *)a;
int y = *(int *)b;
if (p[x] % 2 == p[y] % 2) return x - y;
return p[y] % 2 - p[x] % 2;
}
int main()
{
int n;
scanf("%d", &n);
p = (int *)malloc(sizeof(int) * n);
order = (int *)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
{
scanf("%d", &p[i]);
order[i] = i;
}
qsort(order, n, sizeof(int), cmp);
for (int i = 0; i < n; i++)
printf("%d ", p[order[i]]);
return 0;
}