Quick Sort. C++

365
27 апреля 2017, 16:30

Доброго времени суток. Изучаю алгоритмы и в качестве задания реализовал быструю сортировку(см. код ниже). Сравниваю с алгоритмами в мировой паутине, ничем кардинально не отличается, но мой вызывает Stack Overflow, подскажите, почему?

void my_qsort(vector<int>& arr, int l, int r)
{
    int left = l;
    int right = r;
    int mid = left + (right - left) / 2;
    while (left <= right) {
        while (arr[left] < mid) {
            left++;
        }
        while (arr[right] > mid) {
            right--;
        }
        if (left <= right) {
            swap(arr[left++], arr[right++]);
        }
    }
    if (l < right) {
        my_qsort(arr, l, right);
    }
    if (r > left) {
        my_qsort(arr, r, left);
    }
}
Answer 1
void my_qsort(vector<int>& arr, int l, int r)
{
    int left = l;
    int right = r;
    int mid = arr[(left + right) / 2];
    while (left <= right) {
        while (arr[left] < mid) {
            left++;
        }
        while (arr[right] > mid) {
            right--;
        }
        if (left <= right) {
            swap(arr[left++], arr[right--]);
        }
    }
    if (l < right) {
        my_qsort(arr, l, right);
    }
    if (r > left) {
        my_qsort(arr, left, r);
    }
}
READ ALSO
Заполнение списка из файла

Заполнение списка из файла

Здравствуйте, возник вопрос как заполнить список из файлаИмеется структура, список двусвязный

263
Как вернуть меню [требует правки]

Как вернуть меню [требует правки]

Как вернуть меню что снизу экрана (Компилятор Ресурсы Журнал Компиляции) в Dev C++

343
Помогите найти ошибку в коде C++

Помогите найти ошибку в коде C++

Код записывает в массив остатки от деления, что бы перевести число в двоичную системуНо необходимо "перевернуть" числа

238