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 миллионов строк стек переполняется рекурсией. возможно ли изменить размер стека?