| 
      
        |  | 
          
            | 2. Search 
 |  
            |  |  
            | 2.1 Sequential Search |  
            |  |  
            |  One way to search for a record with the specified key is to examine the list of records in left-to-right    or right-to-left order. 
  Analysis: O(n) |  
            |  |  
            | 
              
                | // return the least i such that list[i] = x; // return -1, if x is not found
 int seqseach(int list[], int x, int n)
 {
 int i;
 
 for (i=1; i<=n && list[i]!=x; i++) ;
 if (i>n) return -1; /* not found */
 return i;
 }
 
 |  |  
            |  |  
            | 2.2 Binary Search |  
            |  |  
            |  One way to search for a record with the specified key in an ordered, sequential list 
  Analysis: O(log n) |  
            |  |  
            | 
              
                | // find x in list[0] <= list[1] <= ... <= list[n-1] int binsearch(int list[], int x, int n)
 {
 int min, max, mid;
 
 min = 0;
 max = n - 1;
 while (min <= max) {
 mid = (min+max)/2;
 if (x < list[mid])
 max = mid - 1;
 else if (x > list[mid])
 min = mid + 1;
 else
 return mid;  /* found match */
 }
 
 return -1; /* not found */
 }
 |  |  |  |  |