Работает через одно место. Задача на СИ..
Проблема в вашей функции sortingsize. Внутри второго цикла вы используете условие j < middle, которое никогда не будет выполнено, так как j начинается с i, а i всегда меньше middle. В результате, второй цикл никогда не выполняется, и элементы после середины массива не сортируются.
Вот исправленный код функции sortingsize:
int sortingsize(char *arr, const int size, const int middle) {
char temp = 0;
for (int i = 0; i < middle; i++) {
for (int j = i; j < middle; j++) {
if (arr[i] > arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
for (int i = middle; i < size; i++) {
for (int j = i; j < size; j++) {
if (arr[i] > arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return 0;
}
Теперь элементы после середины массива также будут сортироваться.