home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / CataniaB / teach-act / esempi / Tipi_ed_operatori / binSearch.c next >
C/C++ Source or Header  |  1999-03-11  |  524b  |  32 lines

  1. /* bin search - vedi esercizio 3-1 pag. 71 del Kernighan-Ritchie */
  2.  
  3. #include <stdio.h>
  4.  
  5. #define SIZE 6
  6.  
  7. int binsearch(int,int*,int);
  8.  
  9. int main()
  10. {
  11.   int a[SIZE] = {2,4,6,8,10,12}, i;
  12.   for (i=1;i <= 13; i++)
  13.     printf("%d: %d\n",i,binsearch(i,a,SIZE));
  14. }
  15.  
  16. int binsearch(int x, int v[], int n)
  17. {
  18.   int low = 0, high = n - 1, mid;
  19.   while (low <= high)
  20.     {
  21.       mid = (low + high) / 2;
  22.       if (x < v[mid])
  23.     high = mid - 1;
  24.       else
  25.     low = mid + 1;
  26.     }
  27.   if (x == v[high]) 
  28.     return high; 
  29.   else
  30.     return -1;
  31. }
  32.