@kill94

Возможно ли увеличит размер стека в Visual c++?

void QuickSort(string masStr[], int first, int last)
{
	int f = first, l = last;
	string temp;
	char midStr[MAX_LENGTH_STR + 1];
	strcpy(midStr, masStr[(f + l) / 2].c_str()); // Находим разделительный элемент в середине массива

	while (strcmp(masStr[f].c_str(), midStr)<0)
		f++; // Находим элемент  от левого индекса.
	while (strcmp(masStr[l].c_str(), midStr)>0)
		l--; // Находим элемент  от правого индекса.
	if (f <= l)  // Если индексы не пересекаются, меняем
	{
		temp = masStr[f];
		masStr[f] = masStr[l];
		masStr[l] = temp;
		f++;
		l--;
	}
	//Если правый индекс не достиг левой границы массива, нужно повторить сортировку левой части.
#pragma omp parallel
	if (first < l) QuickSort(masStr, first, l);
	//Если левый индекс не достиг правой границы массива, нужно повторить сортировку правой части.
	if (f < last) QuickSort(masStr, f, last);
}

функция быстрой сортировки. если включить сортировку 20000000 миллионов строк стек переполняется рекурсией. возможно ли изменить размер стека?
  • Вопрос задан
  • 5339 просмотров
Пригласить эксперта
Ответы на вопрос 3
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Увеличение стека - костыль. Измените алгоритм и разверните рекурсию в цикл.
Ответ написан
Комментировать
dima11221122
@dima11221122
Разработчик программного обеспечения
Можно увеличить так, можно то же самое сделать c помощью директивы в коде
#pragma comment(linker, "/STACK:16777216")
Ответ написан
Комментировать
@dixoNich
frontend developer
Лучше переписать сортировку.
habrahabr.ru/post/205290
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы