Работа быстрой сортировки

При помощи учебника пытаюсь самостоятельно реализовать алгоритм быстрой сортировки. Он корректно отрабатывает для массивов с количеством элементов порядка 100, при 200 и больше уже нет. В чём может быть причина такого поведения?

void quick_sort(int* mas, int l_b, int r_b) {
    int p = l_b;
    int i = l_b + 1;
    int j = r_b;
    while (i <= j) {
        while (mas[p] > mas[i] && i < r_b) {
            i++;
        }
        while (mas[p] < mas[j]) {
            j--;
        }
        if (i < j && j > l_b) {
            std::swap(mas[i], mas[j]);
        }
        else {
            std::swap(mas[p], mas[j]);
            
        }
    }
    if (l_b < j) {
        quick_sort(mas, l_b, j - 1);
    }
    if (r_b > i) {
        quick_sort(mas, j + 1, r_b);
    }
    
} 

int size = 1000;
    int* a = new int[size];
    srand(time(NULL));
    for (int i = 0; i < size; i++) {
        a[i] = rand() % 10000;
    }
quick_sort(a, 0, size - 1);

Ответы (0 шт):