1 /*
2 *
intcmp.c
3 *
4 * Beispielprogramm qsort / bsearch.
5 *
6 * Autor: H.Drachenfels
7 * Erstellt am: 25.4.2024
8 */
9
10 #include <stdio.h>
11 #include <stdlib.h> // qsort, bsearch
12
13 static int intcmp(const void *p, const void *q);
14
15 int main(void)
16 {
17 int a[4] = {40, 20, 10, 30};
18
19 qsort(a, 4, sizeof (int), intcmp); // sortiert a aufsteigend
20
21 int n = 50;
22 int *p = (int*) bsearch(&n, a, 4, sizeof (int), intcmp); // sucht 50 in a
23
24 printf("a = [ ");
25 for (int i = 0; i < 4; ++i)
26 {
27 printf("%d ", a[i]);
28 }
29 printf("]\n");
30
31 printf("&a[0] = %p p = %p\n", (void*) a, (void*) p);
32
33 return 0;
34 }
35
36 /*
37 * Vergleichsfunktion fuer qsort und bsearch muss liefern:
38 * > 0, wenn der erste Wert groesser ist
39 * < 0, wenn der erste Wert kleiner ist
40 * 0, wenn beide Werte gleich sind
41 */
42 static int intcmp(const void *p, const void *q)
43 {
44 const int *left = (const int *) p;
45 const int *right = (const int *) q;
46 if (*left > *right) return 1;
47 if (*left < *right) return -1;
48 return 0;
49 }
50