Ошибка 'stack overflow' в алгоритме 'quicksort'
Алгоритм должен был, через рекурсию, упорядочить массив методом быстрой сортировки. Но, при первом же шаге, поялвляется ошибка stack overflow
на 29 строке.
void quicsort(char* items, int lem);
void qs(char* items, int left, int right);
int main() {
char str[] = "jfjmckldoelazlkper";
int i;
cout << "origin mass: " << str << "\n";
quicsort(str, strlen(str));
cout << "New mass: " << str << "\n";
return 0;
}
void quicsort(char *items, int len) {
cout << *items;
qs(items, 0, len - 1);
}
void qs(char *items, int left, int right) {
int i, j;
int x, y;
i = left; j = right;
x = items[(left + right) / 2];
do {
while ((items[i] < x) && (i < right)) i++;
while ((x < items[j]) && (j > left)) j--;
if (i <= j) {
y = items[i];
items[i] = items[j];
items[j] = y;
i++; y--;
}
} while (i <= j);
if (left < j) qs(items, left, j);
if (i < right) qs(items, i, right);
}
Источник: Stack Overflow на русском