Форум программистов, компьютерный форум CyberForum.ru

qsort исключение Steck Overflow - C++

Восстановить пароль Регистрация
 
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
03.11.2013, 23:52     qsort исключение Steck Overflow #1
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
template<class T>
void quickSort(T* arr, int l, int r)
{
    if(l >= r)
        return;
    auto i = l;
    auto j = r;
    auto med = arr[r / 2];
    while(i <= j)
    {
        while(arr[i] < med)
            ++i;
        while(arr[j] > med)
            --j;
        if(i <= j)
        {
            std::swap(arr[i], arr[j]);
            ++i;
            --j;
        }
    }
    quickSort(arr, l, j);         // Сюда
    quickSort(arr, i, r);        // и сюда направлеет компилятор
 
}

Перепробьівал много примеров, все или исключение дают или первому елемету дают -852244223. Пишу в VC++2012
Даже с форума пробьівал примерьі брать и все одно и то же
Что здесь надо исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 23:52     qsort исключение Steck Overflow
Посмотрите здесь:

C++ qsort
qsort C++ C++
C++ Qsort
C++ qsort
qsort C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
04.11.2013, 00:10     qsort исключение Steck Overflow #2
скорее всего выход за пределы массива так как не достигается условие l >= r
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.11.2013, 00:22     qsort исключение Steck Overflow #3
Цитата Сообщение от marni Посмотреть сообщение
auto med = arr[r / 2];
Ты выбираешь средний элемент с интервала 0;r а надо l;r

(l+r)/2
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.11.2013, 00:41  [ТС]     qsort исключение Steck Overflow #4
Цитата Сообщение от Dani Посмотреть сообщение
Ты выбираешь средний элемент с интервала 0;r а надо l;r
(l+r)/2
пасиб, на одну проблему меньше. Но первьій елемент все равно = -85899..... В чем тут проблема?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.11.2013, 19:22     qsort исключение Steck Overflow #5
marni, скорее всего ты перепутал границы. Покажи как вызываешь сорт
ТОрчОК
Заблокирован
04.11.2013, 19:26     qsort исключение Steck Overflow #6
arr[20];
quickSort(arr, 0 , 19)
скорее всего
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 19:53     qsort исключение Steck Overflow
Еще ссылки по теме:

C++ qsort
C++ Необработанное исключение Stack overflow
Exception class overflow with message floating point overflow C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.11.2013, 19:53  [ТС]     qsort исключение Steck Overflow #7
Цитата Сообщение от ТОрчОК Посмотреть сообщение
arr[20];
quickSort(arr, 0 , 19)
скорее всего
пасиб, работает
Yandex
Объявления
04.11.2013, 19:53     qsort исключение Steck Overflow
Ответ Создать тему
Опции темы

Текущее время: 05:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru