title: Searching from a sorted array in less than O(log(n)) running time
body: <p>I am using binary search to search a number from a sorted array of numbers in O(log(n)) time. My C function for search is as follows:</p>
  
  <pre><code>search(int array[],int size,int search)
   {
   int first=0;
   int last=size-1;
   int middle = (first+last)/2;
     while( first &lt;= last )
     {
        if ( array[middle] &lt; search )
           first = middle + 1;    
        else if ( array[middle] == search ) 
        {
           printf("%d found at location %d.\n", search, middle+1);
           break;
        }
        else
           last = middle - 1;
  
        middle = (first + last)/2;
     }
     if ( first &gt; last )
        printf("Not found! %d is not present in the list.\n", search);
  }
  </code></pre>
  
  <p>Here <code>size</code> is the size of array and <code>search</code> is the number to search.
  Is there any way to perform the search in less complexity then the above program? </p>