How to find the smallest letter in a sorted array that is larger than a given letter in C

1 Answer

0 votes
#include <stdio.h>

// Function to find the smallest letter greater than the given letter
char findSmallestLetterGreaterThanTarget(char letters[], int size, char given_letter) {
    int left = 0, right = size - 1;
    char result = letters[0]; // Default to the first letter

    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (letters[mid] > given_letter) {
            result = letters[mid];
            right = mid - 1; // Narrow down to the left half
        } else {
            left = mid + 1; // Narrow down to the right half
        }
    }

    return result;
}

int main() {
    char letters[] = {'c', 'e', 'k', 'm'};
    int size = sizeof(letters) / sizeof(letters[0]);
    char given_letter = 'd';

    char result = findSmallestLetterGreaterThanTarget(letters, size, given_letter);

    printf("The smallest letter greater than '%c' is: %c\n", given_letter, result);
    
    return 0;
}


/*
run:

The smallest letter greater than 'd' is: e

*/

 



answered Sep 20, 2025 by avibootz
edited Sep 21, 2025 by avibootz
...