| arrays/array-search/bin-search-in-array.c - Binær søgning i et sorteret int array - rekursivt programmeret. | Lektion 11 - slide 9 : 27 Program 3 |
#include <stdio.h>
int* find_in_sorted_array(int si, int *fp, int *tp){
int *mp = fp + (tp - fp)/2;
printf("Dist: %d. [%d - %d]\n", (tp - fp), *fp, *tp);
if (si == *mp)
return mp;
else if (fp >= tp)
return NULL;
else if (si > *mp)
return find_in_sorted_array(si, mp+1, tp); /* search in upper part */
else
return find_in_sorted_array(si, fp, mp-1); /* search in lower part */
}
int main(void) {
int tab[] = {-9, 4, 8, 9, 12, 19, 21, 29};
int done = 0, i;
int *result;
while (!done){
printf("Search for: "); scanf(" %d", &i);
result = find_in_sorted_array(i, &tab[0], &tab[0] + 7);
if (result) printf("Found\n"); else printf("NOT found\n");
done = i == 0;
}
return 0;
}