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
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.