scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

0094-bsearch.c (553B)


      1 #include <assert.h>
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 
      5 /*
      6 output:
      7 testing
      8 done
      9 end:
     10 */
     11 
     12 static int
     13 cmp(const void *pp1, const void *pp2)
     14 {
     15 	const int *p1 = pp1, *p2 = pp2;
     16 
     17 	return *p1 - *p2;
     18 }
     19 
     20 static int
     21 test(void)
     22 {
     23 	int *p, key, i, arr[64];
     24 
     25 	for (i = 0; i < 64; i++)
     26 		arr[i] = rand();
     27 
     28 	qsort(arr, 64, sizeof(int), cmp);
     29 
     30 	for (i = 0; i < 63; i++)
     31 		assert(arr[i] <= arr[i+1]);
     32 
     33 	key = arr[33];
     34 	p = bsearch(&key, arr, 64, sizeof(int), cmp);
     35 	assert(*p == arr[33]);
     36 }
     37 
     38 int
     39 main(void)
     40 {
     41 	puts("testing");
     42 	test();
     43 	puts("done");
     44 
     45 	return 0;
     46 }