home *** CD-ROM | disk | FTP | other *** search
/ Sams Teach Yourself C in 21 Days (6th Edition) / STYC216E.ISO / mac / Examples / Day19 / sort.c < prev    next >
C/C++ Source or Header  |  2002-08-11  |  1KB  |  57 lines

  1. /* Using qsort() and bsearch() with values.*/
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define MAX 20
  7.  
  8. int intcmp(const void *v1, const void *v2);
  9.  
  10. int main( void )
  11. {
  12.      int arr[MAX], count, key, *ptr;
  13.  
  14.      /* Enter some integers from the user. */
  15.  
  16.      printf("Enter %d integer values; press Enter after each.\n", MAX);
  17.  
  18.      for (count = 0; count < MAX; count++)
  19.          scanf("%d", &arr[count]);
  20.  
  21.      puts("Press Enter to sort the values.");
  22.      getc(stdin);
  23.  
  24.      /* Sort the array into ascending order. */
  25.  
  26.      qsort(arr, MAX, sizeof(arr[0]), intcmp);
  27.  
  28.      /* Display the sorted array. */
  29.  
  30.      for (count = 0; count < MAX; count++)
  31.          printf("\narr[%d] = %d.", count, arr[count]);
  32.  
  33.      puts("\nPress Enter to continue.");
  34.      getc(stdin);
  35.  
  36.      /* Enter a search key. */
  37.  
  38.      printf("Enter a value to search for: ");
  39.      scanf("%d", &key);
  40.  
  41.      /* Perform the search. */
  42.  
  43.      ptr = (int *)bsearch(&key, arr, MAX, sizeof(arr[0]),intcmp);
  44.  
  45.      if ( ptr != NULL )
  46.          printf("%d found at arr[%d].", key, (ptr - arr));
  47.      else
  48.          printf("%d not found.", key);
  49.      return 0;
  50. }
  51.  
  52. int intcmp(const void *v1, const void *v2)
  53. {
  54.      return (*(int *)v1 - *(int *)v2);
  55. }
  56.  
  57.