Ich versuche die qsort()
Funktion zu verwenden, um nur die geraden Zahlen eines Arrays zu sortieren (die Chancen bleiben in ihren Positionen).qsort(): Nur gerade Zahlen eines Arrays sortieren
Zum Beispiel, wenn ich das Array haben:
5 122 3 26 48
Nach dem Sortieren würde man erhalten:
5 26 3 48 122
Meine Intuition war nur eine Art zu machen, wenn beide von a
und b
wies Zahlen sind sogar .
Dies ist mein Versuch:
#include <stdio.h>
#include <stdlib.h>
int comp_even(const void *a, const void *b) {
int l = *(int *)a;
int r = *(int *)b;
if (!(l&1) && !(r&1)) //if both are even, then sort them in ascending order
return (l-r);
return 0;
}
int main() {
int i, n;
int a[1001];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
qsort(a, n, sizeof(int), comp_even);
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
Ich denke nicht, dass das mit einer allgemeinen Vergleichssortierung wie 'qsort' möglich ist. – melpomene
copy => sort => zurückschreiben – BLUEPIXY
Wie erwarten Sie, dass '6 5 4 3 2 1' sortiert wird? '2 4 6 5 3 1' oder' 2 5 4 3 6 1'? Das heißt, muss jede ungerade Zahl auf dem gleichen Index im Array bleiben? Oder müssen sie nur relativ zueinander sortiert werden? – Schwern