Неправильно работает сортировка строк, C

Необходимо выполнить сортировку массива строк по количеству букв 'a' в каждой строке (в порядке убывания).

Я написал код, он работает, но не во всех случаях. Не могу понять, что я забыл учесть. Вот код:


    int counterA(char* str){ // Функция, которая считает количество букв 'a' в строке
        int count;
        for (int j=0; str[j]!='\0'; j++){
            if(str[j]=='a') count++;
        }
        return count;
    }
    void Fun(char** str){ // Функция сортировки
        char* tmp;
        for(int j=0; j<5; j++){ 
            for(int i=0; i<5-j-1; i++){
                if(counterA(str[i])<counterA(str[i+1])){
                    tmp=str[i];
                    str[i]=str[i+1];
                    str[i+1]=tmp;
                }
            }
        }
    }

Пример неверной сортировки


Ответы (1 шт):

Автор решения: Harry
int count;

Компилятор разве вас не предупредил - типа "использована неинициализированная переменная"? У вас в count изначально мусор...

Еще я бы задумался над эффективностью - даже не O(N^2) сортировки, но пересчете всякий раз количества букв a в строках. Возможно, стоило бы иметь массив с длинами и выполнять сортировку двух массивов параллельно.

→ Ссылка