How to sort an array of strings and search for a string using binary search in C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

static int compare_function(const void* a, const void* b) {
    return strcmp(*(const char**)a, *(const char**)b);
}

static int compare(const void* a, const void* b) {
    const char* s1 = a;
    const char* const* s2 = b;

    return strcmp(s1, *s2);
}

int main()
{
    const char* arr[] = { "abdc", "baz", "dav", "cd", "abcd", "b", "aa", "ab", "aab", "bbq", "a"};

    int size = sizeof(arr) / sizeof(arr[0]);

    qsort(arr, size, sizeof(const char*), compare_function);

    for (int i = 0; i < size; i++)
        printf("%s\n", arr[i]);

    char tofind[] = "ab";
    char** item = (char*)bsearch(tofind, arr, size, sizeof(arr[0]), compare);

    if (item != NULL) {
        printf("\nFound item = %s", *item);
    }
    else {
        printf("\nItem = %s not found", tofind);
    }

    return 0;
}




/*
run:

a
aa
aab
ab
abcd
abdc
b
baz
bbq
cd
dav

Found item = ab

*/

 



answered May 18, 2023 by avibootz

Related questions

1 answer 133 views
1 answer 110 views
1 answer 260 views
1 answer 170 views
1 answer 74 views
1 answer 181 views
2 answers 204 views
...