#include #define SIZE 1000000 void print_array(int a[], int); int bsearch(int a[], unsigned int beg, unsigned int end, int val); void main() { int A[SIZE], i; int pos = rand() % SIZE; printf("pos is %d\n", pos); A[pos] = 17; for (i = 1; (pos + i) < SIZE; i++) A[pos+i] = 17 + i; for (i = 1; (pos - i) >= 0; i++) A[pos-i] = 17 - i; pos = bsearch(A, 0, SIZE-1, 17); if (pos > -1) printf("17 occurs at position %d\n", pos); else printf("17 does not occur\n"); } int bsearch(int a[], unsigned int beg, unsigned int end, int val) { int mid; if (beg == end) if (a[beg] == val) return beg; else return -1; mid = (beg + end) / 2; if (val <= a[mid]) return bsearch(a, beg, mid, val); else return bsearch(a, mid+1, end, val); } void print_array(int a[], int len) { int i; for (i = 0; i < len; i++) printf("%d ", a[i]); printf("\n"); }