0 Tage Serie
c / intermediate
Snippet

Benutzerdefiniertes Sortieren mit qsort und Callbacks

Die Standardfunktion qsort verwendet einen Vergleichs-Callback, um die Sortierreihenfolge eines beliebigen Datentyps zu bestimmen.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
int compare_desc(const void *a, const void *b) {
return (*(int*)b - *(int*)a);
}
int main() {
int data[] = {10, 50, 20, 40, 30};
size_t n = sizeof(data) / sizeof(data[0]);
qsort(data, n, sizeof(int), compare_desc);
for(size_t i = 0; i < n; i++) printf("%d ", data[i]);
return 0;
}
Erklärung
1
const void *a, const void *b
Generische Zeiger, die qsort nutzt, um Elemente an den Komparator zu übergeben.
2
*(int*)b - *(int*)a
Subtraktionslogik, die positiv, null oder negativ für absteigende Sortierung zurückgibt.