Table of Content
Added test driver to binsearch function which comes from K&R C.
#include <stdio.h> #include <string.h> int binsearch(int x,int v[],int n); /* test binsearch function */ main() { int x1 = 8; int v1[10] = {4,2,5,6,8,2,34,12,23,10}; int index = binsearch(x1,v1,10); printf("v1[] ="); int i; for (i=0;i<10;i++) printf(" %d", v1[i]); printf("\nThe index of number %d in v1[]: %d\n",x1,index); return 0; } /* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */ int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n - 1; while (low <= high) { mid = (low+high)/2; if (x < v[mid]) high = mid + 1; else if (x > v[mid]) low = mid + 1; else /* found match */ return mid; } return -1; /* no match */ }
test result:
$ binsearch v1[] = 4 2 5 6 8 2 34 12 23 10 The index of number 8 in v1[]: 4