Неправильно работает сортировка строк, 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 в строках. Возможно, стоило бы иметь массив с длинами и выполнять сортировку двух массивов параллельно.