How to sort an int array and search for a number using binary search in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
 
int compare(const void* a, const void* b) {
    return (*(int*)a - *(int*)b);
}
 
int main()
{
    int arr[] = { 10, 5, 13, 8, 30, 1, 20, 9, 17, 0, 5, 4, 2 };
    int size = sizeof(arr) / sizeof(arr[0]);
 
    qsort(arr, size, sizeof(int), compare);
 
    for (int i = 0; i < size; i++)
        printf("%d ", arr[i]);
 
    int tofind = 17;
    int* item = (int*)bsearch(&tofind, arr, size, sizeof(int), compare);
 
    if (item != NULL) {
        printf("\nFound item = %d", *item);
    }
    else {
        printf("\nItem = %d not found", tofind);
    }
 
    return 0;
}
 
 
 
 
/*
run:
 
0 1 2 4 5 5 8 9 10 13 17 20 30
Found item = 17
 
*/

 



answered May 18, 2023 by avibootz
edited May 18, 2023 by avibootz

Related questions

1 answer 228 views
1 answer 103 views
1 answer 63 views
1 answer 170 views
2 answers 189 views
...